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++: ???