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 は、 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 ) で初期化します。