22 General utilities library [utilities]

22.4 Tuples [tuple]

22.4.8 Element access [tuple.elem]

template<size_t I, class. Types> constexpr tuple_element_t<I, tuple<Types..>& get(tuple<Types..>& t) noexcept; template<size_t I, class. Types> constexpr tuple_element_t<I, tuple<Types..>& get(tuple<Types..>& t) noexcept; / #1 template<size_t I, class. Types> constexpr const tuple_element_t<I, tuple<Types..>& get(const tuple<Types..>& t) noexcept; / #2 template<size_t I, class. Types> constexpr const tuple_element_t<I, tuple<Types..>& get(const tuple<Types..>& t) noexcept;
Returns: A reference to the
[Note 1: 
For the overload marked #1, if a type T in Types is some reference type X&, the return type is X&, not X&&.
However, if the element type is a non-reference type T, the return type is T&&.
— end note]
[Note 2: 
Constness is shallow.
For the overload marked #2, if a type T in Types is some reference type X&, the return type is X&, not const X&.
However, if the element type is a non-reference type T, the return type is const T&.
This is consistent with how constness is defined to work for non-static data members of reference type.
— end note]
template<class T, class. Types> constexpr T& get(tuple<Types..>& t) noexcept; template<class T, class. Types> constexpr T&& get(tuple<Types..>& t) noexcept; template<class T, class. Types> constexpr const T& get(const tuple<Types..>& t) noexcept; template<class T, class. Types> constexpr const T&& get(const tuple<Types..>& t) noexcept;
Returns: A reference to the element of t corresponding to the type T in Types.
[Example 1: const tuple<int, const int, double> t(1, 2, 3.4, 5.6); const int& i1 = get<int>(t); / OK, i1 has value 1 const int& i2 = get<const int>(t); / OK, i2 has value 2 const double& d = get<double>(t); / error: type double is not unique within t — end example]
[Note 3: 
The reason get is a non-member function is that if this functionality had been provided as a member function, code where the type depended on a template parameter would have required using the template keyword.
— end note]

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant