名前空間
変種
操作

std::experimental::ranges:: tagged

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
汎用ユーティリティライブラリ
ユーティリティコンポーネント
関数オブジェクト
メタプログラミングと型特性
タグ付きペアとタプル
                          
tagged
タグ指定子
                                      
                          
 
std::experimental::ranges::tagged
 
template< class Base, TagSpecifier... Tags >

    requires sizeof...(Tags) <= std::tuple_size<Base>::value

struct tagged;
(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) [編集]
English 日本語 中文(简体) 中文(繁體)