__gnu_cxx::pair< _T1, _T2 >(3) Library Functions Manual __gnu_cxx::pair< _T1, _T2 >(3)

__gnu_cxx::pair< _T1, _T2 > - Struct holding two objects of arbitrary type.

#include <utility>


typedef _T1 first_type
The type of the first member. typedef _T2 second_type
The type of the second member.


template<typename _U1 = _T1, typename _U2 = _T2, typename enable_if< __and_< __is_implicitly_default_constructible< _U1 >, __is_implicitly_default_constructible< _U2 > > ::value, bool >::type = true> constexpr pair ()
template<typename _U2, __enable_if_t< __and_< is_pointer< _T1 >, __not_< is_reference< _U2 > >, is_constructible< _T2, _U2 >, __not_< is_constructible< _T2, const _U2 & > >, is_convertible< _U2, _T2 > >::value, bool > = true> constexpr pair (__zero_as_null_pointer_constant, _U2 &&__y,...)
template<typename _U2, __enable_if_t< __and_< is_pointer< _T1 >, __not_< is_reference< _U2 > >, is_constructible< _T2, _U2 >, __not_< is_constructible< _T2, const _U2 & > >, __not_< is_convertible< _U2, _T2 > > >::value, bool > = false> constexpr pair (__zero_as_null_pointer_constant, _U2 &&__y,...)
template<typename _U1, __enable_if_t< __and_< __not_< is_reference< _U1 > >, is_pointer< _T2 >, is_constructible< _T1, _U1 >, __not_< is_constructible< _T1, const _U1 & > >, is_convertible< _U1, _T1 > >::value, bool > = true> constexpr pair (_U1 &&__x, __zero_as_null_pointer_constant,...)
template<typename _U1, __enable_if_t< __and_< __not_< is_reference< _U1 > >, is_pointer< _T2 >, is_constructible< _T1, _U1 >, __not_< is_constructible< _T1, const _U1 & > >, __not_< is_convertible< _U1, _T1 > > >::value, bool > = false> constexpr pair (_U1 &&__x, __zero_as_null_pointer_constant,...)
template<typename _U1, typename _U2, typename enable_if< _PCCP::template _MoveConstructiblePair< _U1, _U2 >() &&_PCCP::template _ImplicitlyMoveConvertiblePair< _U1, _U2 >(), bool >::type = true> constexpr pair (_U1 &&__x, _U2 &&__y)
template<typename _U1, typename _U2, typename enable_if< _PCCP::template _MoveConstructiblePair< _U1, _U2 >() &&!_PCCP::template _ImplicitlyMoveConvertiblePair< _U1, _U2 >(), bool >::type = false> constexpr pair (_U1 &&__x, _U2 &&__y)
template<typename _U1 = _T1, typename _U2 = _T2, typename enable_if< _PCCP::template _ConstructiblePair< _U1, _U2 >() &&_PCCP::template _ImplicitlyConvertiblePair< _U1, _U2 >(), bool >::type = true> constexpr pair (const _T1 &__a, const _T2 &__b)
Construct from two const lvalues, allowing implicit conversions. template<typename _U1 = _T1, typename _U2 = _T2, typename enable_if< _PCCP::template _ConstructiblePair< _U1, _U2 >() &&!_PCCP::template _ImplicitlyConvertiblePair< _U1, _U2 >(), bool >::type = false> constexpr pair (const _T1 &__a, const _T2 &__b)
Construct from two const lvalues, disallowing implicit conversions. constexpr pair (const pair &)=default
Copy constructor. template<typename _U1, typename _U2, typename enable_if< _PCCFP< _U1, _U2 >::template _ConstructiblePair< _U1, _U2 >() &&_PCCFP< _U1, _U2 >::template _ImplicitlyConvertiblePair< _U1, _U2 >(), bool >::type = true> constexpr pair (const pair< _U1, _U2 > &__p)
template<typename _U1, typename _U2, typename enable_if< _PCCFP< _U1, _U2 >::template _ConstructiblePair< _U1, _U2 >() &&!_PCCFP< _U1, _U2 >::template _ImplicitlyConvertiblePair< _U1, _U2 >(), bool >::type = false> constexpr pair (const pair< _U1, _U2 > &__p)
constexpr pair (pair &&)=default
Move constructor. template<typename _U1, typename _U2, typename enable_if< _PCCFP< _U1, _U2 >::template _MoveConstructiblePair< _U1, _U2 >() &&_PCCFP< _U1, _U2 >::template _ImplicitlyMoveConvertiblePair< _U1, _U2 >(), bool >::type = true> constexpr pair (pair< _U1, _U2 > &&__p)
template<typename _U1, typename _U2, typename enable_if< _PCCFP< _U1, _U2 >::template _MoveConstructiblePair< _U1, _U2 >() &&!_PCCFP< _U1, _U2 >::template _ImplicitlyMoveConvertiblePair< _U1, _U2 >(), bool >::type = false> constexpr pair (pair< _U1, _U2 > &&__p)
template<typename... _Args1, typename... _Args2> constexpr pair (piecewise_construct_t, tuple< _Args1... >, tuple< _Args2... >)
pair & operator= (__conditional_t< __and_< is_copy_assignable< _T1 >, is_copy_assignable< _T2 > >::value, const pair &, const __nonesuch & > __p)
pair & operator= (__conditional_t< __and_< is_move_assignable< _T1 >, is_move_assignable< _T2 > >::value, pair &&, __nonesuch && > __p) noexcept(__and_< is_nothrow_move_assignable< _T1 >, is_nothrow_move_assignable< _T2 > >::value)
template<typename _U1, typename _U2> enable_if< __and_< is_assignable< _T1 &, const_U1 & >, is_assignable< _T2 &, const_U2 & > >::value, pair & >::type operator= (const pair< _U1, _U2 > &__p)
template<typename _U1, typename _U2> enable_if< __and_< is_assignable< _T1 &, _U1 && >, is_assignable< _T2 &, _U2 && > >::value, pair & >::type operator= (pair< _U1, _U2 > &&__p)
constexpr void swap (pair &__p) noexcept(__and_< __is_nothrow_swappable< _T1 >, __is_nothrow_swappable< _T2 > >::value)
Swap the first members and then the second members.


_T1 first
The first member. _T2 second
The second member.

(Note that these are not member symbols.)



template<typename _T1, typename _T2> pair (_T1, _T2) -> pair< _T1, _T2 >
template<typename _T1, typename _T2> constexpr enable_if< __and_< __is_swappable< _T1 >, __is_swappable< _T2 > >::value >::type swap (pair< _T1, _T2 > &__x, pair< _T1, _T2 > &__y) noexcept(noexcept(__x.swap(__y)))
template<typename _T1, typename _T2> constexpr bool operator== (const pair< _T1, _T2 > &__x, const pair< _T1, _T2 > &__y)
Two pairs of the same type are equal iff their members are equal. template<typename _T1, typename _T2> constexpr bool operator< (const pair< _T1, _T2 > &__x, const pair< _T1, _T2 > &__y)
template<typename _T1, typename _T2> constexpr bool operator!= (const pair< _T1, _T2 > &__x, const pair< _T1, _T2 > &__y)
Uses operator== to find the result. template<typename _T1, typename _T2> constexpr bool operator> (const pair< _T1, _T2 > &__x, const pair< _T1, _T2 > &__y)
Uses operator< to find the result. template<typename _T1, typename _T2> constexpr bool operator<= (const pair< _T1, _T2 > &__x, const pair< _T1, _T2 > &__y)
Uses operator< to find the result. template<typename _T1, typename _T2> constexpr bool operator>= (const pair< _T1, _T2 > &__x, const pair< _T1, _T2 > &__y)
Uses operator< to find the result.

struct __gnu_cxx::pair< _T1, _T2 >"Struct holding two objects of arbitrary type.

Template Parameters

_T1 Type of first object.
_T2 Type of second object.

https://gcc.gnu.org/onlinedocs/libstdc++/manual/utilities.html

The type of the first member.

The type of the second member.

template<typename _T1, typename _T2> std::pair< _T1, _T2 >::pair (const pair< _T1, _T2 > & ) [constexpr], [default]

Copy constructor.

template<typename _T1, typename _T2> std::pair< _T1, _T2 >::pair (pair< _T1, _T2 > && ) [constexpr], [default]

Move constructor.

The default constructor creates first and second using their respective default constructors.

Construct from two const lvalues, allowing implicit conversions.

Construct from two const lvalues, disallowing implicit conversions.

Swap the first members and then the second members.

The first member.

The second member.

Generated automatically by Doxygen for libstdc++ from the source code.

libstdc++