Files
cppdraft_translate/cppdraft/tuple/common/ref.md
2025-10-25 03:02:53 +03:00

97 lines
2.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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.3Concept tuple-like[tuple.like]") TTuple, [tuple-like](tuple.like#concept:tuple-like "22.4.3Concept 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.4The 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.3Concept tuple-like[tuple.like]") TTuple, [tuple-like](tuple.like#concept:tuple-like "22.4.3Concept 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.4The typedef specifier[dcl.typedef]") type denotes the typetuple<common_type_t<TTypes, UTypes>...>[.](#3.sentence-2)