From Jason Turner

[pair.astuple]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpnmncaqw1/{from.md → to.md} +14 -13
tmp/tmpnmncaqw1/{from.md → to.md} RENAMED
@@ -4,20 +4,19 @@
4
  template<class T1, class T2>
5
  struct tuple_size<pair<T1, T2>> : integral_constant<size_t, 2> { };
6
  ```
7
 
8
  ``` cpp
9
- tuple_element<0, pair<T1, T2>>::type
 
 
 
10
  ```
11
 
12
- *Value:* The type `T1`.
13
 
14
- ``` cpp
15
- tuple_element<1, pair<T1, T2>>::type
16
- ```
17
-
18
- *Value:* The type T2.
19
 
20
  ``` cpp
21
  template<size_t I, class T1, class T2>
22
  constexpr tuple_element_t<I, pair<T1, T2>>& get(pair<T1, T2>& p) noexcept;
23
  template<size_t I, class T1, class T2>
@@ -26,12 +25,16 @@ template<size_t I, class T1, class T2>
26
  constexpr tuple_element_t<I, pair<T1, T2>>&& get(pair<T1, T2>&& p) noexcept;
27
  template<size_t I, class T1, class T2>
28
  constexpr const tuple_element_t<I, pair<T1, T2>>&& get(const pair<T1, T2>&& p) noexcept;
29
  ```
30
 
31
- *Returns:* If `I == 0` returns a reference to `p.first`; if `I == 1`
32
- returns a reference to `p.second`; otherwise the program is ill-formed.
 
 
 
 
33
 
34
  ``` cpp
35
  template<class T1, class T2>
36
  constexpr T1& get(pair<T1, T2>& p) noexcept;
37
  template<class T1, class T2>
@@ -40,12 +43,11 @@ template <class T1, class T2>
40
  constexpr T1&& get(pair<T1, T2>&& p) noexcept;
41
  template<class T1, class T2>
42
  constexpr const T1&& get(const pair<T1, T2>&& p) noexcept;
43
  ```
44
 
45
- *Requires:* `T1` and `T2` are distinct types. Otherwise, the program is
46
- ill-formed.
47
 
48
  *Returns:* A reference to `p.first`.
49
 
50
  ``` cpp
51
  template<class T2, class T1>
@@ -56,10 +58,9 @@ template <class T2, class T1>
56
  constexpr T2&& get(pair<T1, T2>&& p) noexcept;
57
  template<class T2, class T1>
58
  constexpr const T2&& get(const pair<T1, T2>&& p) noexcept;
59
  ```
60
 
61
- *Requires:* `T1` and `T2` are distinct types. Otherwise, the program is
62
- ill-formed.
63
 
64
  *Returns:* A reference to `p.second`.
65
 
 
4
  template<class T1, class T2>
5
  struct tuple_size<pair<T1, T2>> : integral_constant<size_t, 2> { };
6
  ```
7
 
8
  ``` cpp
9
+ template<size_t I, class T1, class T2>
10
+ struct tuple_element<I, pair<T1, T2>> {
11
+ using type = see below ;
12
+ };
13
  ```
14
 
15
+ *Mandates:* `I` < 2.
16
 
17
+ *Type:* The type `T1` if `I` is 0, otherwise the type `T2`.
 
 
 
 
18
 
19
  ``` cpp
20
  template<size_t I, class T1, class T2>
21
  constexpr tuple_element_t<I, pair<T1, T2>>& get(pair<T1, T2>& p) noexcept;
22
  template<size_t I, class T1, class T2>
 
25
  constexpr tuple_element_t<I, pair<T1, T2>>&& get(pair<T1, T2>&& p) noexcept;
26
  template<size_t I, class T1, class T2>
27
  constexpr const tuple_element_t<I, pair<T1, T2>>&& get(const pair<T1, T2>&& p) noexcept;
28
  ```
29
 
30
+ *Mandates:* `I` < 2.
31
+
32
+ *Returns:*
33
+
34
+ - If `I` is 0, returns a reference to `p.first`.
35
+ - If `I` is 1, returns a reference to `p.second`.
36
 
37
  ``` cpp
38
  template<class T1, class T2>
39
  constexpr T1& get(pair<T1, T2>& p) noexcept;
40
  template<class T1, class T2>
 
43
  constexpr T1&& get(pair<T1, T2>&& p) noexcept;
44
  template<class T1, class T2>
45
  constexpr const T1&& get(const pair<T1, T2>&& p) noexcept;
46
  ```
47
 
48
+ *Mandates:* `T1` and `T2` are distinct types.
 
49
 
50
  *Returns:* A reference to `p.first`.
51
 
52
  ``` cpp
53
  template<class T2, class T1>
 
58
  constexpr T2&& get(pair<T1, T2>&& p) noexcept;
59
  template<class T2, class T1>
60
  constexpr const T2&& get(const pair<T1, T2>&& p) noexcept;
61
  ```
62
 
63
+ *Mandates:* `T1` and `T2` are distinct types.
 
64
 
65
  *Returns:* A reference to `p.second`.
66