namespace std {
template<tuple-like TTuple, tuple-like UTuple,
template<class> class TQual, template<class> class UQual>
struct basic_common_reference<TTuple, UTuple, TQual, UQual>;
}
概要
tuple
とtuple-like
なオブジェクについて、common_reference
で共通の参照型を取得できるようにアダプトするbasic_common_reference
の特殊化である。
ユーザーが直接この特殊化を利用する必要はない。common_reference
を使用すること。
効果
tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>
によって得られた型をメンバ型type
として定義する。
要件
TTuple
かUTuple
のどちらかがtuple
の特殊化であること。TTuple
とUTuple
のそれぞれについて、(次のT
を置き換える形で)is_same_v<T,decay_t<T>>
であること。- 実質的には
TTuple
とUtuple
について、参照型ではなく、最上位のconst
/volatile
修飾も持っていないこと要求する。
- 実質的には
TTuple
とUTuple
の要素数が一致していること。- 具体的には、
tuple_size_v<TTuple> == tuple_size_v<UTuple>
であること。
- 具体的には、
tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>
が正しく型を表すこと。
バージョン
言語
- C++23
処理系
- Clang: ???
- GCC: ???
- ICC: ???
- Visual C++: ???