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 |
(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 的標籤指定符 (類) |