2.9 KiB
[tuple.common.ref]
22 General utilities library [utilities]
22.4 Tuples [tuple]
22.4.10 common_reference related specializations [tuple.common.ref]
In the descriptions that follow:
-
Let TTypes be a pack formed by the sequence of tuple_element_t<i, TTuple> for every integer 0â¤i<tuple_size_v.
-
Let UTypes be a pack formed by the sequence of tuple_element_t<i, UTuple> for every integer 0â¤i<tuple_size_v.
template<[tuple-like](tuple.like#concept:tuple-like "22.4.3 Concept tuple-like [tuple.like]") TTuple, [tuple-like](tuple.like#concept:tuple-like "22.4.3 Concept tuple-like [tuple.like]") UTuple, template<class> class TQual, template<class> class UQual> struct basic_common_reference<TTuple, UTuple, TQual, UQual> { using type = see below; };
Constraints:
-
TTuple is a specialization of tuple orUTuple is a specialization of tuple.
-
is_same_v<TTuple, decay_t> is true.
-
is_same_v<UTuple, decay_t> is true.
-
tuple_size_v equals tuple_size_v.
-
tuple<common_reference_t<TQual, UQual>...> denotes a type.
The member typedef-name type denotes the typetuple<common_reference_t<TQual, UQual>...>.
template<[tuple-like](tuple.like#concept:tuple-like "22.4.3 Concept tuple-like [tuple.like]") TTuple, [tuple-like](tuple.like#concept:tuple-like "22.4.3 Concept tuple-like [tuple.like]") UTuple> struct common_type<TTuple, UTuple> { using type = see below; };
Constraints:
-
TTuple is a specialization of tuple orUTuple is a specialization of tuple.
-
is_same_v<TTuple, decay_t> is true.
-
is_same_v<UTuple, decay_t> is true.
-
tuple_size_v equals tuple_size_v.
-
tuple<common_type_t<TTypes, UTypes>...> denotes a type.
The member typedef-name type denotes the typetuple<common_type_t<TTypes, UTypes>...>.