std::experimental::ranges::tagged
来自 cppreference.com
< cpp | experimental | ranges
定义在头文件 <experimental/ranges/utility> 中 |
||
template< class Base, TagSpecifier... Tags > requires sizeof...(Tags) <= std::tuple_size<Base>::value |
(范围 TS) | |
类模板 tagged
扩展了类类型 Base
(它公开派生自它),它是一个元组类类型,并添加了一组由标签指定器 Tags...
指定的命名访问器。这些标签按顺序应用:Tags...
中的第 i 个标签指定器对应于元组的第 i 个元素。
Tags...
中的标签指定器应该唯一。否则,行为未定义。
不可能通过指向除 Base
以外的任何基类的指针来删除 tagged
的实例。
内容 |
[编辑] 成员函数
构造 tagged 对象(公共成员函数) | |
为 tagged 对象赋值(公共成员函数) | |
交换两个 tagged 对象的内容(公共成员函数) |
[编辑] 命名元素访问器
对于 Tags...
中的第 N 个标签指定器,其对应元素名称为 name,tagged
提供如下名为 name 的访问器
constexpr decltype(auto) name() & { return std::get<N>(*this); } constexpr decltype(auto) name() const & { return std::get<N>(*this); } constexpr decltype(auto) name() && { return std::get<N>(std::move(*this)); }
[编辑] 非成员函数
为 tagged 对象专门化 swap (函数) |
[编辑] 元组类访问
获取 tagged 的大小(类模板特化) | |
获取 tagged 元素的类型(类模板特化) |
[编辑] 另请参阅
指定类型为标签指定器 (概念) | |
标记 std::pair 的别名模板 (别名模板) | |
创建 tagged_pair 的便利函数(函数模板) | |
标记 std::tuple 的别名模板 (别名模板) | |
创建 tagged_tuple 的便利函数(函数模板) | |
用于 ranges::tagged 的标签指定器 (类) |