Files
2025-10-25 03:02:53 +03:00

3.1 KiB

[pair.astuple]

22 General utilities library [utilities]

22.3 Pairs [pairs]

22.3.4 Tuple-like access to pair [pair.astuple]

🔗

template<class T1, class T2> struct tuple_size<pair<T1, T2>> : integral_constant<size_t, 2> { };

🔗

template<size_t I, class T1, class T2> struct tuple_element<I, pair<T1, T2>> { using type = see below ; };

1

#

Mandates: I<2.

2

#

Type: The type T1 if I is 0, otherwise the type T2.

🔗

template<size_t I, class T1, class T2> constexpr tuple_element_t<I, pair<T1, T2>>& get(pair<T1, T2>& p) noexcept; template<size_t I, class T1, class T2> constexpr const tuple_element_t<I, pair<T1, T2>>& get(const pair<T1, T2>& p) noexcept; template<size_t I, class T1, class T2> constexpr tuple_element_t<I, pair<T1, T2>>&& get(pair<T1, T2>&& p) noexcept; template<size_t I, class T1, class T2> constexpr const tuple_element_t<I, pair<T1, T2>>&& get(const pair<T1, T2>&& p) noexcept;

3

#

Mandates: I<2.

4

#

Returns:

  • (4.1)

    If I is 0, returns a reference to p.first.

  • (4.2)

    If I is 1, returns a reference to p.second.

🔗

template<class T1, class T2> constexpr T1& get(pair<T1, T2>& p) noexcept; template<class T1, class T2> constexpr const T1& get(const pair<T1, T2>& p) noexcept; template<class T1, class T2> constexpr T1&& get(pair<T1, T2>&& p) noexcept; template<class T1, class T2> constexpr const T1&& get(const pair<T1, T2>&& p) noexcept;

5

#

Mandates: T1 and T2 are distinct types.

6

#

Returns: A reference to p.first.

🔗

template<class T2, class T1> constexpr T2& get(pair<T1, T2>& p) noexcept; template<class T2, class T1> constexpr const T2& get(const pair<T1, T2>& p) noexcept; template<class T2, class T1> constexpr T2&& get(pair<T1, T2>&& p) noexcept; template<class T2, class T1> constexpr const T2&& get(const pair<T1, T2>&& p) noexcept;

7

#

Mandates: T1 and T2 are distinct types.

8

#

Returns: A reference to p.second.