std::experimental::ranges::tagged_tuple
From cppreference.com
< cpp | experimental | ranges
| Defined in header <experimental/ranges/tuple> |
||
| template< TaggedType... Types > using tagged_tuple = /* 以下を参照 */; |
(ranges TS) | |
ranges::taggedがstd::tupleをラップする際の便利なエイリアス templateです。
TaggedTypeとは、TagSpecifierであるSと要素の型Tの関数型S(T)です。
tagged_tuple<S1(T1), ..., SN(TN)> は、ranges::tagged<std::tuple<T1, ..., TN>, S1, ..., SN> のエイリアスです。
[編集] 注釈
関数型がタグ指定子と対応する要素型を「結合」するために使用されるため、通常のパラメータ型調整が適用されます。特に、トップレベルのcv修飾子は削除され、配列型はポインタに調整されます:tagged_tuple<tag::in(const int* const), tag::out(int[])> は、ranges::tagged<std::tuple<const int*, int*>, tag::in, tag::out> です。
[編集] 関連項目
| 型がタグ指定子とその要素型を表すことを指定します (コンセプト) | |
| 名前付きアクセサでタプルライクな型を拡張します (クラステンプレート) | |
| タグ付き std::pair のエイリアステンプレート (エイリアステンプレート) | |
tagged_pair を作成するための便利な関数(関数テンプレート) | |
tagged_tuple を作成するための便利な関数。(function template) | |
| ranges::tagged と共に使用するタグ指定子。 (class) |