libstdc++
std::pair< _T1, _T2 > Struct Template Reference

Inherits __pair_base< _T1, _T2 >.

Public Types

typedef _T1 first_type
 
typedef _T2 second_type
 

Public Member Functions

constexpr pair (const pair &)=default
 
constexpr pair (pair &&)=default
 
template<typename... _Args1, typename... _Args2>
constexpr pair (piecewise_construct_t, tuple< _Args1... >, tuple< _Args2... >)
 
_U2 const _U2 & pair (const pair< _U1, _U2 > &__p) noexcept(_S_nothrow_constructible< const _U1 &, const _U2 &>())
 
constexpr pair _T2 ())
 
 _U2 ()) const expr explicit(!_S_convertible< _U1
 
 _U2 ()) pair(_U1 &&__x
 
 _U2 ()) const expr explicit(!_S_convertible< _U1
 
 _U2 ()) pair(_U1 &&
 
_U2 _U2 ()) const expr explicit(!_S_convertible< const _U1 &
 
const _U2 &constexpr _U2 _U2 ()) const expr explicit(!_S_convertible< _U1
 
const _U2 &constexpr _U2 _U2 ()) pair(pair< _U1
 
 _U2 ()) const expr explicit(!_S_convertible< _U1
 
 _U2 ()) pair(pair< _U1
 
constexpr pair _U2 ())
 
constexpr explicit (__not_< __and_< __is_implicitly_default_constructible< _T1 >, __is_implicitly_default_constructible< _T2 >>>()) pair() noexcept(is_nothrow_default_constructible_v< _T1 > &&is_nothrow_default_constructible_v< _T2 >) requires is_default_constructible_v< _T1 > &&is_default_constructible_v< _T2 >
 
constexpr explicit (!_S_convertible< const _T1 &, const _T2 &>()) pair(const type_identity_t< _T1 > &__x
 
const _U2 &constexpr explicit (!_S_convertible< const _U1 &, const _U2 &>()) pair(const pair< _U1
 
constexpr const _T2 &__y noexcept (_S_nothrow_constructible< const _T1 &, const _T2 &>()) requires(_S_constructible< const _T1 &
 
_U2 &&__y noexcept (_S_nothrow_constructible< _U1, _U2 >())
 
const _U2 &constexpr _U2 _U2 &&__p noexcept (_S_nothrow_constructible< _U1, _U2 >())
 
pairoperator= (const pair &)=delete
 
constexpr pairoperator= (const pair &__p) noexcept(_S_nothrow_assignable< const _T1 &, const _T2 &>()) requires(_S_assignable< const _T1 &
 
constexpr pairoperator= (pair &&__p) noexcept(_S_nothrow_assignable< _T1, _T2 >()) requires(_S_assignable< _T1
 
template<typename _U1 , typename _U2 >
constexpr pairoperator= (const pair< _U1, _U2 > &__p) noexcept(_S_nothrow_assignable< const _U1 &, const _U2 &>()) requires(_S_assignable< const _U1 &
 
template<typename _U1 , typename _U2 >
constexpr pairoperator= (pair< _U1, _U2 > &&__p) noexcept(_S_nothrow_assignable< _U1, _U2 >()) requires(_S_assignable< _U1
 
template<typename _U1 , typename _U2 >
 requires (_S_constructible< _U1, _U2 >()) &&(!_S_dangles< _U1
 
template<typename _U1 , typename _U2 >
 requires (_S_constructible< _U1, _U2 >()) &&(_S_dangles< _U1
 
template<typename _U1 , typename _U2 >
_U2 && requires (_S_constructible< const _U1 &, const _U2 &>()) &&(!_S_dangles< _U1
 
template<typename _U1 , typename _U2 >
 requires (_S_constructible< const _U1 &, const _U2 &>()) &&(_S_dangles< const _U1 &
 
template<typename _U1 , typename _U2 >
const _U2 &constexpr _U2 & requires (_S_constructible< _U1, _U2 >()) &&(!_S_dangles< _U1
 
template<typename _U1 , typename _U2 >
 requires (_S_constructible< _U1, _U2 >()) &&(_S_dangles< _U1
 
constexpr const _T2 &__y const _T2 second (__y)
 
constexpr void swap (pair &__p) noexcept(__and_< __is_nothrow_swappable< _T1 >, __is_nothrow_swappable< _T2 >>::value)
 

Public Attributes

_T1 first
 
_T2 second
 
constexpr pair const _T2 & second
 
constexpr pair const _U2 & second
 
return * this
 

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)
 
template<typename _T1 , typename _T2 >
 pair (_T1, _T2) -> pair< _T1, _T2 >
 
template<typename _T1 , typename _T2 , typename _U1 , typename _U2 >
constexpr bool operator== (const pair< _T1, _T2 > &__x, const pair< _U1, _U2 > &__y) requires requires
 
template<typename _T1 , typename _T2 , typename _U1 , typename _U2 >
constexpr common_comparison_category_t< __detail::__synth3way_t< _T1, _U1 >, __detail::__synth3way_t< _T2, _U2 > > operator (const pair< _T1, _T2 > &__x, const pair< _U1, _U2 > &__y)
 
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
_T1Type of first object.
_T2Type of second object.

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

Definition at line 3122 of file bits/stl_iterator.h.

Member Typedef Documentation

◆ first_type

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

The type of the first member.

Definition at line 305 of file stl_pair.h.

◆ second_type

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

The type of the second member.

Definition at line 306 of file stl_pair.h.

Constructor & Destructor Documentation

◆ pair() [1/2]

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

Copy constructor.

◆ pair() [2/2]

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

Move constructor.

Member Function Documentation

◆ explicit() [1/2]

template<typename _T1, typename _T2>
constexpr std::pair< _T1, _T2 >::explicit ( __not_< __and_< __is_implicitly_default_constructible< _T1 >, __is_implicitly_default_constructible< _T2 >>>  ()) &&
inlinenoexcept

Default constructor.

Definition at line 362 of file stl_pair.h.

◆ explicit() [2/2]

template<typename _T1, typename _T2>
constexpr std::pair< _T1, _T2 >::explicit ( !_S_convertible< const _T1 &, const _T2 & >  ()) const &

Constructor accepting lvalues of first_type and second_type

◆ operator=() [1/4]

template<typename _T1, typename _T2>
constexpr pair& std::pair< _T1, _T2 >::operator= ( const pair< _T1, _T2 > &  __p) const &
noexcept

Copy assignment operator.

◆ operator=() [2/4]

template<typename _T1, typename _T2>
constexpr pair& std::pair< _T1, _T2 >::operator= ( pair< _T1, _T2 > &&  __p)
noexcept

Move assignment operator.

◆ operator=() [3/4]

template<typename _T1, typename _T2>
template<typename _U1 , typename _U2 >
constexpr pair& std::pair< _T1, _T2 >::operator= ( const pair< _U1, _U2 > &  __p) const &
noexcept

Converting assignment from a const pair<U1, U2> lvalue.

◆ operator=() [4/4]

template<typename _T1, typename _T2>
template<typename _U1 , typename _U2 >
constexpr pair& std::pair< _T1, _T2 >::operator= ( pair< _U1, _U2 > &&  __p)
noexcept

Converting assignment from a non-const pair<U1, U2> rvalue.

◆ requires() [1/3]

template<typename _T1, typename _T2>
template<typename _U1 , typename _U2 >
std::pair< _T1, _T2 >::requires ( _S_constructible< _U1, _U2 >  ()) &&

Constructor accepting two values of arbitrary types.

◆ requires() [2/3]

template<typename _T1, typename _T2>
template<typename _U1 , typename _U2 >
_U2&& std::pair< _T1, _T2 >::requires ( _S_constructible< const _U1 &, const _U2 & >  ()) &&

Converting constructor from a const pair<U1, U2> lvalue.

◆ requires() [3/3]

template<typename _T1, typename _T2>
template<typename _U1 , typename _U2 >
const _U2& constexpr _U2& std::pair< _T1, _T2 >::requires ( _S_constructible< _U1, _U2 >  ()) &&

Converting constructor from a non-const pair<U1, U2> rvalue.

◆ swap()

template<typename _T1, typename _T2>
constexpr void std::pair< _T1, _T2 >::swap ( pair< _T1, _T2 > &  __p)
inlinenoexcept

Swap the first members and then the second members.

Definition at line 321 of file stl_pair.h.

Referenced by std::sub_match< _Bi_iter >::swap(), and std::pair< entry_pointer, typename _Alloc::size_type >::swap().

Member Data Documentation

◆ first

◆ second


The documentation for this struct was generated from the following files: