std::experimental::ranges::tagged<Base,Tags...>::tagged
来自cppreference.com
                    
                                        
                    < cpp | experimental | ranges | utility/tagged
                    
                                                            
                    |   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 ranges::MoveConstructible<Base>;  | 
(5) | |
|   tagged(const Base& that) noexcept(std::is_nothrow_copy_constructible<Base>::value) requires ranges::CopyConstructible<Base>;  | 
(6) | |
|   template <class Other>     requires ranges::Constructible<Base, Other>  | 
(7) | |
|   template <class Other>     requires ranges::Constructible<Base, const Other&>  | 
(8) | |
构造 tagged 对象。
1) 
tagged<Base, Tags...> 继承 Base 的构造函数。2-4) 
tagged 拥有默认化的默认、赋值和移动构造函数,它们调用 Base 的对应构造函数。5) 源自 
Base 的转换移动构造函数。以 std::move(that) 初始化 Base 子对象。6) 源自 
Base 的转换复制构造函数。以 that 初始化 Base 子对象。7) 源自带匹配标签的相异 
tagged 特化的转换移动构造函数。以 static_cast<Other&&>(that) 初始化 Base 子对象。8) 源自带匹配标签的相异 
tagged 特化的转换复制构造函数。以 static_cast<const Other&>(that) 初始化 Base 子对象。