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