[tuple.common.ref] # 22 General utilities library [[utilities]](./#utilities) ## 22.4 Tuples [[tuple]](tuple#common.ref) ### 22.4.10 common_reference related specializations [tuple.common.ref] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L3037) In the descriptions that follow: - [(1.1)](#1.1) Let TTypes be a pack formed by the sequence of tuple_element_t for every integer 0≤i[.](#1.1.sentence-1) - [(1.2)](#1.2) Let UTypes be a pack formed by the sequence of tuple_element_t for every integer 0≤i[.](#1.2.sentence-1) [🔗](#lib:basic_common_reference,tuple) `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 TQual, template class UQual> struct basic_common_reference { using type = see below; }; ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L3061) *Constraints*: - [(2.1)](#2.1) TTuple is a specialization of tuple orUTuple is a specialization of tuple[.](#2.1.sentence-1) - [(2.2)](#2.2) is_same_v> is true[.](#2.2.sentence-1) - [(2.3)](#2.3) is_same_v> is true[.](#2.3.sentence-1) - [(2.4)](#2.4) tuple_size_v equals tuple_size_v[.](#2.4.sentence-1) - [(2.5)](#2.5) tuple, UQual>...> denotes a type[.](#2.5.sentence-1) The member [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]") type denotes the typetuple, UQual>...>[.](#2.sentence-2) [🔗](#lib:common_type,tuple) `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 { using type = see below; }; ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L3090) *Constraints*: - [(3.1)](#3.1) TTuple is a specialization of tuple orUTuple is a specialization of tuple[.](#3.1.sentence-1) - [(3.2)](#3.2) is_same_v> is true[.](#3.2.sentence-1) - [(3.3)](#3.3) is_same_v> is true[.](#3.3.sentence-1) - [(3.4)](#3.4) tuple_size_v equals tuple_size_v[.](#3.4.sentence-1) - [(3.5)](#3.5) tuple...> denotes a type[.](#3.5.sentence-1) The member [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]") type denotes the typetuple...>[.](#3.sentence-2)