From Jason Turner

[tuple.rel]

Diff to HTML by rtfpessoa

tmp/tmp923s6p2j/{from.md → to.md} RENAMED
@@ -21,11 +21,11 @@ after the first equality comparison that evaluates to `false`.
21
  template<class... TTypes, class... UTypes>
22
  constexpr bool operator<(const tuple<TTypes...>& t, const tuple<UTypes...>& u);
23
  ```
24
 
25
  *Requires:* For all `i`, where `0 <= i` and `i < sizeof...(TTypes)`,
26
- `get<i>(t) < get<i>(u)` and `get<i>(u) < get<i>(t)` are valid
27
  expressions returning types that are convertible to `bool`.
28
  `sizeof...(TTypes)` `==` `sizeof...(UTypes)`.
29
 
30
  *Returns:* The result of a lexicographical comparison between `t` and
31
  `u`. The result is defined as:
@@ -51,20 +51,21 @@ template<class... TTypes, class... UTypes>
51
  ``` cpp
52
  template<class... TTypes, class... UTypes>
53
  constexpr bool operator<=(const tuple<TTypes...>& t, const tuple<UTypes...>& u);
54
  ```
55
 
56
- *Returns:* `!(u < t)`
57
 
58
  ``` cpp
59
  template<class... TTypes, class... UTypes>
60
  constexpr bool operator>=(const tuple<TTypes...>& t, const tuple<UTypes...>& u);
61
  ```
62
 
63
- *Returns:* `!(t < u)`
64
 
65
- The above definitions for comparison operators do not require `tₜₐᵢₗ`
66
- (or `uₜₐᵢₗ`) to be constructed. It may not even be possible, as `t` and
67
- `u` are not required to be copy constructible. Also, all comparison
68
- operators are short circuited; they do not perform element accesses
69
- beyond what is required to determine the result of the comparison.
 
70
 
 
21
  template<class... TTypes, class... UTypes>
22
  constexpr bool operator<(const tuple<TTypes...>& t, const tuple<UTypes...>& u);
23
  ```
24
 
25
  *Requires:* For all `i`, where `0 <= i` and `i < sizeof...(TTypes)`,
26
+ both `get<i>(t) < get<i>(u)` and `get<i>(u) < get<i>(t)` are valid
27
  expressions returning types that are convertible to `bool`.
28
  `sizeof...(TTypes)` `==` `sizeof...(UTypes)`.
29
 
30
  *Returns:* The result of a lexicographical comparison between `t` and
31
  `u`. The result is defined as:
 
51
  ``` cpp
52
  template<class... TTypes, class... UTypes>
53
  constexpr bool operator<=(const tuple<TTypes...>& t, const tuple<UTypes...>& u);
54
  ```
55
 
56
+ *Returns:* `!(u < t)`.
57
 
58
  ``` cpp
59
  template<class... TTypes, class... UTypes>
60
  constexpr bool operator>=(const tuple<TTypes...>& t, const tuple<UTypes...>& u);
61
  ```
62
 
63
+ *Returns:* `!(t < u)`.
64
 
65
+ [*Note 1*: The above definitions for comparison functions do not
66
+ require `tₜₐᵢₗ` (or `uₜₐᵢₗ`) to be constructed. It may not even be
67
+ possible, as `t` and `u` are not required to be copy constructible.
68
+ Also, all comparison functions are short circuited; they do not perform
69
+ element accesses beyond what is required to determine the result of the
70
+ comparison. — *end note*]
71