From Jason Turner

[tuple.elem]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpel7ygk_p/{from.md → to.md} +12 -10
tmp/tmpel7ygk_p/{from.md → to.md} RENAMED
@@ -4,32 +4,34 @@
4
  template<size_t I, class... Types>
5
  constexpr tuple_element_t<I, tuple<Types...>>&
6
  get(tuple<Types...>& t) noexcept;
7
  template<size_t I, class... Types>
8
  constexpr tuple_element_t<I, tuple<Types...>>&&
9
- get(tuple<Types...>&& t) noexcept; // Note A
10
  template<size_t I, class... Types>
11
  constexpr const tuple_element_t<I, tuple<Types...>>&
12
- get(const tuple<Types...>& t) noexcept; // Note B
13
  template<size_t I, class... Types>
14
  constexpr const tuple_element_t<I, tuple<Types...>>&& get(const tuple<Types...>&& t) noexcept;
15
  ```
16
 
17
  *Mandates:* `I` < `sizeof...(Types)`.
18
 
19
  *Returns:* A reference to the `I`ᵗʰ element of `t`, where indexing is
20
  zero-based.
21
 
22
- [*Note 1*: \[Note A\]If a type `T` in `Types` is some reference type
23
- `X&`, the return type is `X&`, not `X&&`. However, if the element type
24
- is a non-reference type `T`, the return type is `T&&`. — *end note*]
 
25
 
26
- [*Note 2*: \[Note B\]Constness is shallow. If a type `T` in `Types` is
27
- some reference type `X&`, the return type is `X&`, not `const X&`.
28
- However, if the element type is a non-reference type `T`, the return
29
- type is `const T&`. This is consistent with how constness is defined to
30
- work for non-static data members of reference type. — *end note*]
 
31
 
32
  ``` cpp
33
  template<class T, class... Types>
34
  constexpr T& get(tuple<Types...>& t) noexcept;
35
  template<class T, class... Types>
 
4
  template<size_t I, class... Types>
5
  constexpr tuple_element_t<I, tuple<Types...>>&
6
  get(tuple<Types...>& t) noexcept;
7
  template<size_t I, class... Types>
8
  constexpr tuple_element_t<I, tuple<Types...>>&&
9
+ get(tuple<Types...>&& t) noexcept; // #1
10
  template<size_t I, class... Types>
11
  constexpr const tuple_element_t<I, tuple<Types...>>&
12
+ get(const tuple<Types...>& t) noexcept; // #2
13
  template<size_t I, class... Types>
14
  constexpr const tuple_element_t<I, tuple<Types...>>&& get(const tuple<Types...>&& t) noexcept;
15
  ```
16
 
17
  *Mandates:* `I` < `sizeof...(Types)`.
18
 
19
  *Returns:* A reference to the `I`ᵗʰ element of `t`, where indexing is
20
  zero-based.
21
 
22
+ [*Note 1*: For the overload marked \#1, if a type `T` in `Types` is
23
+ some reference type `X&`, the return type is `X&`, not `X&&`. However,
24
+ if the element type is a non-reference type `T`, the return type is
25
+ `T&&`. — *end note*]
26
 
27
+ [*Note 2*: Constness is shallow. For the overload marked \#2, if a type
28
+ `T` in `Types` is some reference type `X&`, the return type is `X&`, not
29
+ `const X&`. However, if the element type is a non-reference type `T`,
30
+ the return type is `const T&`. This is consistent with how constness is
31
+ defined to work for non-static data members of reference
32
+ type. — *end note*]
33
 
34
  ``` cpp
35
  template<class T, class... Types>
36
  constexpr T& get(tuple<Types...>& t) noexcept;
37
  template<class T, class... Types>