std::experimental::ranges::tagged
来自 cppreference.cn
< cpp | experimental | ranges
template< class Base, TagSpecifier... Tags > requires sizeof...(Tags) <= std::tuple_size<Base>::value |
(ranges TS) | |
类模板 tagged
扩展了元组类类型 Base
(它公开地派生自 Base
),并提供由标签指定符 Tags...
指定的一组命名访问器。这些标签按顺序应用:Tags...
中第 i 个标签指定符对应于元组的第 i 个元素。
Tags...
中的标签指定符必须是唯一的。否则,行为是未定义的。
无法通过指向除 Base
之外的任何基类的指针删除 tagged
的实例。
目录 |
[编辑] 成员函数
构造一个 tagged 对象(public member function) | |
赋值一个 tagged 对象(public member function) | |
交换两个 tagged 对象的内容(public member function) |
[编辑] 命名元素访问器
对于 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)); }
[编辑] 非成员函数
特化 swap 以用于 tagged 对象(function) |
[编辑] 元组式访问
获取 tagged 的大小(class template specialization) | |
获取 tagged 元素的类型(class template specialization) |
[编辑] 参见
指定类型是标签指定符 (概念) | |
带标签的 std::pair 的别名模板 (别名模板) | |
用于创建 tagged_pair 的便捷函数(函数模板) | |
带标签的 std::tuple 的别名模板 (别名模板) | |
用于创建 tagged_tuple 的便捷函数(函数模板) | |
用于 ranges::tagged 的标签指定符 (类) |