Namespaces
Variants

std::experimental::ranges::tagged<Base,Tags...>:: tagged

From cppreference.net
using Base :: Base ;
(1)
tagged ( ) = default ;
(2)
tagged ( tagged && that ) = default ;
(3)
tagged ( const tagged & that ) = default ;
(4)
tagged ( Base && that ) noexcept ( std:: is_nothrow_move_constructible < Base > :: value )
requires MoveConstructible < Base > ;
(5)
tagged ( const Base & that ) noexcept ( std:: is_nothrow_copy_constructible < Base > :: value )
requires CopyConstructible < Base > ;
(6)
template < class Other >

requires Constructible < Base, Other >
constexpr tagged ( ranges:: tagged < Other, Tags... > && that )

noexcept ( std:: is_nothrow_constructible < Base, Other > :: value ) ;
(7)
template < class Other >

requires Constructible < Base, const Other & >

constexpr tagged ( const ranges:: tagged < Other, Tags... > & that ) ;
(8)

tagged 객체를 생성합니다.

1) tagged<Base, Tags...> Base 의 생성자들을 상속합니다.
2-4) tagged 는 기본, 복사, 이동 생성자를 기본 구현(defaulted)하며, 이들은 Base 의 해당 생성자를 호출합니다.
5) Base 로부터 이동 생성자를 변환합니다. Base 서브객체를 std :: move ( that ) 로 초기화합니다.
6) Base 로부터 변환 복사 생성자. Base 서브오브젝트를 that 으로 초기화합니다.
7) 다른 tagged 특수화에서 일치하는 태그를 가진 이동 생성자로 변환합니다. Base 하위 객체를 static_cast < Other && > ( that ) 로 초기화합니다.
8) 일치하는 태그를 가진 다른 tagged 특수화로부터 복사 생성자를 변환합니다. Base 하위 객체를 static_cast < const Other & > ( that ) 로 초기화합니다.