タプル類似、ペア類似
ja.cppreference.net から
template< class T >
concept tuple-like = /* see below */;
|
(1) | (C++23以降) (説明専用*) |
template< class T >
concept pair-like =
tuple-like<T> && std::tuple_size_v<std::remove_cvref_t<T>> == 2;
|
(2) | (C++23以降) (説明専用*) |
1) 型
T がコンセプト tuple-like をモデル化し満たすのは、std::remove_cvref_t<T> が
- std::array、
|
(C++26以降) |
- std::pair、
- std::tuple、または
- std::ranges::subrange の特殊化である場合です。
2)
pair-like オブジェクトは、正確に2個の要素を持つ tuple-like オブジェクトです。注記
tuple-like
型は
タプルプロトコル
を実装します。つまり、そのような型は
std::get
、
std::tuple_element
および
std::tuple_size
と共に使用できます。
tuple-like
型の要素は
構造化バインディング
でバインドできます。
関連項目
tuple-like
および
pair-like
は、以下の標準ライブラリコンポーネントで使用されます:
新しい
tuple
を構築する
(公開メンバ関数) |
|
ある
tuple
の内容を別の
tuple
に代入する
(公開メンバ関数) |
|
|
(C++20で削除)
(C++20で削除)
(C++20で削除)
(C++20で削除)
(C++20で削除)
(C++20)
|
tuple内の値を辞書順で比較する
(関数テンプレート) |
tuple
と
tuple-like
型の共通参照型を決定する
(クラステンプレートの特殊化) |
|
|
(C++23)
|
tuple
と
tuple-like
型の共通型を決定する
(クラステンプレートの特殊化) |
|
(C++11)
|
任意の数のtupleを連結して
tuple
を作成する
(関数テンプレート) |
|
(C++17)
|
引数のtupleで関数を呼び出す
(関数テンプレート) |
|
(C++17)
|
引数のtupleでオブジェクトを構築する
(関数テンプレート) |
新しい
pair
を構築する
(
std::pair<T1,T2>
の公開メンバ関数)
|
|
|
内容を代入する
(
std::pair<T1,T2>
の公開メンバ関数)
|
|
subrange
を
pair-like
型に変換する
(
std::ranges::subrange<I,S,K>
の公開メンバ関数)
|
|
tuple-like
値からなる
view
と数値Nを受け取り、各tupleのN
th
要素の
view
を生成する
(クラステンプレート) (範囲アダプタオブジェクト) |