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; //
|
| 10 |
template<size_t I, class... Types>
|
| 11 |
constexpr const tuple_element_t<I, tuple<Types...>>&
|
| 12 |
-
get(const tuple<Types...>& t) noexcept; //
|
| 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*:
|
| 23 |
-
`X&`, the return type is `X&`, not `X&&`. However,
|
| 24 |
-
is a non-reference type `T`, the return type is
|
|
|
|
| 25 |
|
| 26 |
-
[*Note 2*:
|
| 27 |
-
some reference type `X&`, the return type is `X&`, not
|
| 28 |
-
However, if the element type is a non-reference type `T`,
|
| 29 |
-
type is `const T&`. This is consistent with how constness is
|
| 30 |
-
work for non-static data members of reference
|
|
|
|
| 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>
|