Init
This commit is contained in:
93
cppdraft/pairs/spec.md
Normal file
93
cppdraft/pairs/spec.md
Normal file
@@ -0,0 +1,93 @@
|
||||
[pairs.spec]
|
||||
|
||||
# 22 General utilities library [[utilities]](./#utilities)
|
||||
|
||||
## 22.3 Pairs [[pairs]](pairs#spec)
|
||||
|
||||
### 22.3.3 Specialized algorithms [pairs.spec]
|
||||
|
||||
[ð](#lib:operator==,pair)
|
||||
|
||||
`template<class T1, class T2, class U1, class U2>
|
||||
constexpr bool operator==(const pair<T1, T2>& x, const pair<U1, U2>& y);
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1305)
|
||||
|
||||
*Constraints*: x.first == y.first and x.second == y.second are
|
||||
valid expressions and
|
||||
each of decltype(x.first == y.first) anddecltype(x.second == y.second) models *boolean-
|
||||
testable*[.](#1.sentence-1)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1312)
|
||||
|
||||
*Returns*: x.first == y.first && x.second == y.second[.](#2.sentence-1)
|
||||
|
||||
[ð](#lib:operator%3c=%3e,pair)
|
||||
|
||||
`template<class T1, class T2, class U1, class U2>
|
||||
constexpr common_comparison_category_t<synth-three-way-result<T1, U1>,
|
||||
synth-three-way-result<T2, U2>>
|
||||
operator<=>(const pair<T1, T2>& x, const pair<U1, U2>& y);
|
||||
`
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1326)
|
||||
|
||||
*Effects*: Equivalent to:if (auto c = *synth-three-way*(x.first, y.first); c != 0) return c;return *synth-three-way*(x.second, y.second);
|
||||
|
||||
[ð](#lib:swap,pair)
|
||||
|
||||
`template<class T1, class T2>
|
||||
constexpr void swap(pair<T1, T2>& x, pair<T1, T2>& y) noexcept(noexcept(x.swap(y)));
|
||||
template<class T1, class T2>
|
||||
constexpr void swap(const pair<T1, T2>& x, const pair<T1, T2>& y) noexcept(noexcept(x.swap(y)));
|
||||
`
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1344)
|
||||
|
||||
*Constraints*:
|
||||
|
||||
- [(4.1)](#4.1)
|
||||
|
||||
For the first overload,is_swappable_v<T1> is true andis_swappable_v<T2> is true[.](#4.1.sentence-1)
|
||||
|
||||
- [(4.2)](#4.2)
|
||||
|
||||
For the second overload,is_swappable_v<const T1> is true andis_swappable_v<const T2> is true[.](#4.2.sentence-1)
|
||||
|
||||
[5](#5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1357)
|
||||
|
||||
*Effects*: Equivalent to x.swap(y)[.](#5.sentence-1)
|
||||
|
||||
[ð](#lib:make_pair)
|
||||
|
||||
`template<class T1, class T2>
|
||||
constexpr pair<unwrap_ref_decay_t<T1>, unwrap_ref_decay_t<T2>> make_pair(T1&& x, T2&& y);
|
||||
`
|
||||
|
||||
[6](#6)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1369)
|
||||
|
||||
*Returns*: pair<unwrap_ref_decay_t<T1>,
|
||||
unwrap_ref_decay_t<T2>>(std::forward<T1>(x), std::forward<T2>(y))
|
||||
|
||||
[7](#7)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L1377)
|
||||
|
||||
[*Example [1](#example-1)*:
|
||||
|
||||
In place of:return pair<int, double>(5, 3.1415926); // explicit types a C++ program may contain:return make_pair(5, 3.1415926); // types are deduced
|
||||
|
||||
â *end example*]
|
||||
Reference in New Issue
Block a user