std::experimental::ranges:: tagged
From cppreference.com
< cpp | experimental | ranges
| Defined in header <experimental/ranges/utility> |
||
| template< class Base, TagSpecifier... Tags > requires sizeof...(Tags) <= std::tuple_size<Base>::value |
(ranges TS) | |
クラステンプレートtaggedは、タプルライクなクラス型Baseを(直接公開派生させることによって)拡張し、タグ指定子Tags...によって指定された名前付きアクセサのセットを追加します。タグは順序通りに適用されます。Tags...におけるi番目のタグ指定子は、タプルのi番目の要素に対応します。
Tags...におけるタグ指定子は一意でなければなりません。そうでなければ、動作は未定義です。
Base以外の任意の基底クラスへのポインタを通じてtaggedのインスタンスを削除することはできません。
目次 |
[編集] メンバ関数
taggedオブジェクトの構築(public member function) | |
taggedオブジェクトの代入(public member function) | |
2つの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)); }
[編集] 非メンバ関数
taggedオブジェクトのswapを特殊化(function) |
[編集] タプルライクなアクセス
taggedのサイズを取得(class template specialization) | |
taggedの要素の型を取得(class template specialization) |
[編集] 関連項目
| 型がタグ指定子であることを指定します (コンセプト) | |
| タグ付き std::pair のエイリアステンプレート (エイリアステンプレート) | |
tagged_pair を作成するための便利な関数(関数テンプレート) | |
| タグ付き std::tuple のエイリアステンプレート。 (alias template) | |
tagged_tuple を作成するための便利な関数。(function template) | |
| ranges::tagged と共に使用するタグ指定子。 (class) |