class template
<tuple>
std::common_type(C++23)
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 ✅