97 lines
2.9 KiB
Markdown
97 lines
2.9 KiB
Markdown
[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<i, TTuple> for every integer 0â¤i<tuple_size_v<TTuple>[.](#1.1.sentence-1)
|
||
|
||
- [(1.2)](#1.2)
|
||
|
||
Let UTypes be a pack formed by
|
||
the sequence of tuple_element_t<i, UTuple> for every integer 0â¤i<tuple_size_v<UTuple>[.](#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> class TQual, template<class> class UQual>
|
||
struct basic_common_reference<TTuple, UTuple, TQual, UQual> {
|
||
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<TTuple, decay_t<TTuple>> is true[.](#2.2.sentence-1)
|
||
|
||
- [(2.3)](#2.3)
|
||
|
||
is_same_v<UTuple, decay_t<UTuple>> is true[.](#2.3.sentence-1)
|
||
|
||
- [(2.4)](#2.4)
|
||
|
||
tuple_size_v<TTuple> equals tuple_size_v<UTuple>[.](#2.4.sentence-1)
|
||
|
||
- [(2.5)](#2.5)
|
||
|
||
tuple<common_reference_t<TQual<TTypes>, UQual<UTypes>>...> 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<common_reference_t<TQual<TTypes>, UQual<UTypes>>...>[.](#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<TTuple, UTuple> {
|
||
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<TTuple, decay_t<TTuple>> is true[.](#3.2.sentence-1)
|
||
|
||
- [(3.3)](#3.3)
|
||
|
||
is_same_v<UTuple, decay_t<UTuple>> is true[.](#3.3.sentence-1)
|
||
|
||
- [(3.4)](#3.4)
|
||
|
||
tuple_size_v<TTuple> equals tuple_size_v<UTuple>[.](#3.4.sentence-1)
|
||
|
||
- [(3.5)](#3.5)
|
||
|
||
tuple<common_type_t<TTypes, UTypes>...> 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<common_type_t<TTypes, UTypes>...>[.](#3.sentence-2)
|