| std::pair< _T1, _T2 >(3cxx) | std::pair< _T1, _T2 >(3cxx) |
std::pair< _T1, _T2 > - Struct holding two objects of arbitrary type.
#include <utility>
Inherits __pair_base< _T1, _T2 >.
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 > constexpr
pair< typename __decay_and_strip< _T1
>::__type, typename __decay_and_strip< _T2 >::__type
> make_pair (_T1 &&__x, _T2 &&__y)
A convenience wrapper for creating a pair from two objects.
template<typename _T1 , typename _T2 > pair (_T1,
_T2) -> pair< _T1, _T2 >
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)
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. 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)))
struct std::pair< _T1, _T2 >"Struct holding two objects of arbitrary type.
Template Parameters
https://gcc.gnu.org/onlinedocs/libstdc++/manual/utilities.html
The type of the first member.
The type of the second member.
Copy constructor.
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.
References std::pair< _T1, _T2 >::first, std::pair< _T1, _T2 >::second, std::swap(), and std::pair< _T1, _T2 >::swap().
Referenced by std::pair< _T1, _T2 >::swap(), and std::sub_match< _BiIter >::swap().
The first member.
Referenced by std::pair< _T1, _T2 >::swap().
The second member.
Referenced by std::pair< _T1, _T2 >::swap().
Generated automatically by Doxygen for libstdc++ from the source code.
| libstdc++ |