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 子对象。