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