Manpages - std_pair.3

Table of Contents

NAME

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

SYNOPSIS


#include <stl_pair.h>

Inherits __pair_base< _T1, _T2 >.

Public Types

typedef _T1 first_type
The type of the first member.

typedef _T2 second_type
The type of the second member.

Public Member Functions

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 _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 , typename enable_if*< _PCCP::template _MoveCopyPair< true, _U1, _T2 >(), bool >::type = true> constexpr *pair (_U1 &&__x, const _T2 &__y)

template<typename _U1 , typename enable_if*< _PCCP::template _MoveCopyPair< false, _U1, _T2 >(), bool >::type = false> constexpr *pair (_U1 &&__x, const _T2 &__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.

template<typename _U2 , typename enable_if*< _PCCP::template _CopyMovePair< true, _T1, _U2 >(), bool >::type = true> constexpr *pair (const _T1 &__x, _U2 &&__y)

template<typename _U2 , typename enable_if*< _PCCP::template _CopyMovePair< false, _T1, _U2 >(), bool >::type = false> *pair (const _T1 &__x, _U2 &&__y)

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… >)

template<typename _U1 , typename _U2 > constexpr 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 > constexpr enable_if*< __and_< *is_assignable*< _T1 &, _U1 && >, *is_assignable*< _T2 &, _U2 && > >::value, *pair & >::type operator= (*pair*< _U1, _U2 > &&__p)

constexpr pair & operator= (typename conditional*< __and_< *is_copy_assignable*< _T1 >, *is_copy_assignable*< _T2 > >::value, const *pair &, const __nonesuch & >::type __p)

constexpr pair & operator= (typename conditional*< __and_< *is_move_assignable*< _T1 >, *is_move_assignable*< _T2 > >::value, *pair &&, __nonesuch && >::type __p) noexcept(__and_< *is_nothrow_move_assignable*< _T1 >, *is_nothrow_move_assignable*< _T2 > >::value)

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.

Public Attributes

_T1 first
The first member.

_T2 second
The second member.

Related Functions

(Note that these are not member functions.)

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 > 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)

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)))

Detailed Description

“template<typename _T1, typename _T2>


struct std::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

Definition at line 211 of file stl_pair.h.

Member Typedef Documentation

template<typename _T1 , typename _T2 > typedef _T1 *std::pair*< _T1,

_T2 >::*first_type* The type of the first member.

Definition at line 214 of file stl_pair.h.

template<typename _T1 , typename _T2 > typedef _T2 *std::pair*< _T1,

_T2 >::*second_type* The type of the second member.

Definition at line 215 of file stl_pair.h.

Constructor & Destructor Documentation

template<typename _T1 , typename _T2 > 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 *std::pair*< _T1, _T2 >::*pair ()= [inline]=, = [constexpr]= The default constructor creates first and second using their respective default constructors.

Definition at line 232 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 = _T1,

typename _U2 = _T2, typename enable_if*< __and_< *is_default_constructible*< _U1 >, *is_default_constructible*< _U2 >, __not_< __and_< __is_implicitly_default_constructible< _U1 >, __is_implicitly_default_constructible< _U2 > > > > ::value, bool >::type = false> constexpr *std::pair*< _T1, _T2 >::*pair ()= [inline]=, = [explicit]=, = [constexpr]= Definition at line 245 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 = _T1,

typename _U2 = _T2, typename enable_if*< _PCCP::template _ConstructiblePair< _U1, _U2 >() &&_PCCP::template _ImplicitlyConvertiblePair< _U1, _U2 >(), bool >::type = true> constexpr *std::pair*< _T1, _T2 >::*pair (const _T1 & __a, const _T2 & __b)= [inline]=, = [constexpr]= Construct from two const lvalues, allowing implicit conversions.

Definition at line 266 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 = _T1,

typename _U2 = _T2, typename enable_if*< _PCCP::template _ConstructiblePair< _U1, _U2 >() &&!_PCCP::template _ImplicitlyConvertiblePair< _U1, _U2 >(), bool >::type = false> constexpr *std::pair*< _T1, _T2 >::*pair (const _T1 & __a, const _T2 & __b)= [inline]=, = [explicit]=, = [constexpr]= Construct from two const lvalues, disallowing implicit conversions.

Definition at line 276 of file stl_pair.h.

template<typename _T1 , typename _T2 > 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 *std::pair*< _T1, _T2 >::*pair (const pair*< _U1, _U2 > & __p)= [inline]=, = [constexpr]= Definition at line *300 of file stl_pair.h.

template<typename _T1 , typename _T2 > 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 *std::pair*< _T1, _T2 >::*pair (const pair*< _U1, _U2 > & __p)= [inline]=, = [explicit]=, = [constexpr]= Definition at line *309 of file stl_pair.h.

template<typename _T1 , typename _T2 > constexpr *std::pair*< _T1,

_T2 >::*pair* (const *pair*< _T1, _T2 > &)= [constexpr]=, = [default]= Copy constructor.

template<typename _T1 , typename _T2 > constexpr *std::pair*< _T1,

_T2 >::*pair* (*pair*< _T1, _T2 > &&)= [constexpr]=, = [default]= Move constructor.

template<typename _T1 , typename _T2 > template<typename _U1 ,

typename enable_if*< _PCCP::template _MoveCopyPair< true, _U1, _T2 >(), bool >::type = true> constexpr *std::pair*< _T1, _T2 >::*pair (_U1 && __x, const _T2 & __y)= [inline]=, = [constexpr]= Definition at line 322 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 ,

typename enable_if*< _PCCP::template _MoveCopyPair< false, _U1, _T2 >(), bool >::type = false> constexpr *std::pair*< _T1, _T2 >::*pair (_U1 && __x, const _T2 & __y)= [inline]=, = [explicit]=, = [constexpr]= Definition at line 329 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U2 ,

typename enable_if*< _PCCP::template _CopyMovePair< true, _T1, _U2 >(), bool >::type = true> constexpr *std::pair*< _T1, _T2 >::*pair (const _T1 & __x, _U2 && __y)= [inline]=, = [constexpr]= Definition at line 336 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U2 ,

typename enable_if*< _PCCP::template _CopyMovePair< false, _T1, _U2 >(), bool >::type = false> *std::pair*< _T1, _T2 >::*pair (const _T1 & __x, _U2 && __y)= [inline]=, = [explicit]= Definition at line 343 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 ,

typename _U2 , typename enable_if*< _PCCP::template _MoveConstructiblePair< _U1, _U2 >() &&_PCCP::template _ImplicitlyMoveConvertiblePair< _U1, _U2 >(), bool >::type = true> constexpr *std::pair*< _T1, _T2 >::*pair (_U1 && __x, _U2 && __y)= [inline]=, = [constexpr]= Definition at line 352 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 ,

typename _U2 , typename enable_if*< _PCCP::template _MoveConstructiblePair< _U1, _U2 >() &&!_PCCP::template _ImplicitlyMoveConvertiblePair< _U1, _U2 >(), bool >::type = false> constexpr *std::pair*< _T1, _T2 >::*pair (_U1 && __x, _U2 && __y)= [inline]=, = [explicit]=, = [constexpr]= Definition at line 361 of file stl_pair.h.

template<typename _T1 , typename _T2 > 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 *std::pair*< _T1, _T2 >::*pair (pair*< _U1, _U2 > && __p)= [inline]=, = [constexpr]= Definition at line *371 of file stl_pair.h.

template<typename _T1 , typename _T2 > 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 *std::pair*< _T1, _T2 >::*pair (pair*< _U1, _U2 > && __p)= [inline]=, = [explicit]=, = [constexpr]= Definition at line *381 of file stl_pair.h.

Member Function Documentation

template<typename _T1 , typename _T2 > template<typename _U1 ,

typename _U2 > constexpr enable_if*< __and_< *is_assignable*< _T1 &, const_U1 & >, *is_assignable*< _T2 &, const_U2 & > >::value, *pair & >::type std::pair*< _T1, _T2 >::operator= (const *pair*< _U1, _U2 > & __p)= [inline]=, = [constexpr]= Definition at line *418 of file stl_pair.h.

template<typename _T1 , typename _T2 > template<typename _U1 ,

typename _U2 > constexpr enable_if*< __and_< *is_assignable*< _T1 &, _U1 && >, *is_assignable*< _T2 &, _U2 && > >::value, *pair & >::type std::pair*< _T1, _T2 >::operator= (*pair*< _U1, _U2 > && __p)= [inline]=, = [constexpr]= Definition at line *430 of file stl_pair.h.

template<typename _T1 , typename _T2 > constexpr pair &

std::pair*< _T1, _T2 >::operator= (typename *conditional*< __and_< *is_copy_assignable*< _T1 >, *is_copy_assignable*< _T2 > >::value, const *pair*< _T1, _T2 > &, const __nonesuch & >::type __p)= [inline]=, = [constexpr]= Definition at line *390 of file stl_pair.h.

template<typename _T1 , typename _T2 > constexpr pair &

std::pair*< _T1, _T2 >::operator= (typename *conditional*< __and_< *is_move_assignable*< _T1 >, *is_move_assignable*< _T2 > >::value, *pair*< _T1, _T2 > &&, __nonesuch && >::type __p)= [inline]=, = [constexpr]=, = [noexcept]= Definition at line *401 of file stl_pair.h.

template<typename _T1 , typename _T2 > constexpr void *std::pair*<

_T1, _T2 >::swap (*pair*< _T1, _T2 > & __p)= [inline]=, = [constexpr]=, = [noexcept]= Swap the first members and then the second members.

Definition at line 439 of file stl_pair.h.

Referenced by std::pair< _T1, _T2 >::swap().

Member Data Documentation

template<typename _T1 , typename _T2 > _T1 *std::pair*< _T1, _T2

>::first The first member.

Definition at line 217 of file stl_pair.h.

Referenced by std::_Temporary_buffer< _ForwardIterator, _Tp >::_Temporary_buffer(), __gnu_parallel::__find_template(), std::__sample(), std::set< _Key, _Compare, _Alloc >::insert(), std::pair< _T1, _T2 >::operator<(), and std::pair< _T1, _T2 >::operator==().

template<typename _T1 , typename _T2 > _T2 *std::pair*< _T1, _T2

>::second The second member.

Definition at line 218 of file stl_pair.h.

Referenced by std::_Temporary_buffer< _ForwardIterator, _Tp >::_Temporary_buffer(), std::__sample(), std::set< _Key, _Compare, _Alloc >::insert(), std::pair< _T1, _T2 >::operator<(), and std::pair< _T1, _T2 >::operator==().

Author

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

Author: dt

Created: 2022-02-21 Mon 14:12