namespace std {
template<tuple-like TTuple, tuple-like UTuple>
struct common_type<TTuple, UTuple>;
}
概要
tuple
とtuple-like
なオブジェクについて、どちらからも変換可能な共通の型を取得できるようにするcommon_type
の特殊化である。
効果
tuple<common_type_t<TTypes, 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_type_t<TTypes, UTypes>...>
が正しく型を表すこと。
バージョン
言語
- C++23
処理系
- Clang: 3.0 ✅
- GCC: 4.6.1 ✅
- Visual C++: 2012 ✅