std::pair< _T1, _T2 > Struct Template Reference
Utilities

## Public Types

typedef _T1 | first_type
typedef _T2 | second_type

## Public Member Functions

constexpr | pair ()
constexpr | pair (const _T1 &__a, const _T2 &__b)
template<class _U1 , class _U2 , class = typename enable_if<__and_<is_convertible<const _U1&, _T1>, is_convertible<const _U2&, _T2>>::value>::type>
constexpr | pair (const pair< _U1, _U2 > &__p)
constexpr | pair (const pair &)=default
constexpr | pair (pair &&)=default
template<class _U1 , class = typename enable_if<is_convertible<_U1, _T1>::value>::type>
constexpr | pair (_U1 &&__x, const _T2 &__y)
template<class _U2 , class = typename enable_if<is_convertible<_U2, _T2>::value>::type>
constexpr | pair (const _T1 &__x, _U2 &&__y)
template<class _U1 , class _U2 , class = typename enable_if<__and_<is_convertible<_U1, _T1>, is_convertible<_U2, _T2>>::value>::type>
constexpr | pair (_U1 &&__x, _U2 &&__y)
template<class _U1 , class _U2 , class = typename enable_if<__and_<is_convertible<_U1, _T1>, is_convertible<_U2, _T2>>::value>::type>
constexpr | pair (pair< _U1, _U2 > &&__p)
template<typename... _Args1, typename... _Args2>
| pair (piecewise_construct_t, tuple< _Args1...>, tuple< _Args2...>)
pair & | operator= (const pair &__p)
pair & | operator= (pair &&__p) noexcept(__and_< is_nothrow_move_assignable< _T1 >, is_nothrow_move_assignable< _T2 >>::value)
template<class _U1 , class _U2 >
pair & | operator= (const pair< _U1, _U2 > &__p)
template<class _U1 , class _U2 >
pair & | operator= (pair< _U1, _U2 > &&__p)
void | swap (pair &__p) noexcept(noexcept(swap(first, __p.first))&&noexcept(swap(second, __p.second)))

## Public Attributes

_T1 | first
_T2 | second

## Detailed Description

### template<class _T1, class _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.

Definition at line 96 of file stl_pair.h.

## Member Typedef Documentation

template<class _T1, class _T2>

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

`first_type` is the first bound type

Definition at line 99 of file stl_pair.h.

## Constructor & Destructor Documentation

template<class _T1, class _T2>

constexpr std::pair< _T1, _T2 >::pair | ( |  | ) |

inline

`second` is a copy of the second object

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

Definition at line 108 of file stl_pair.h.

template<class _T1, class _T2>

constexpr std::pair< _T1, _T2 >::pair | ( | const _T1 & | __a,
|  | const _T2 & | __b
| ) |  |

inline

Two objects may be passed to a `pair` constructor to be copied.

Definition at line 112 of file stl_pair.h.

template<class _T1, class _T2>
template<class _U1 , class _U2 , class = typename enable_if<__and_<is_convertible<const _U1&, _T1>, is_convertible<const _U2&, _T2>>::value>::type>

constexpr std::pair< _T1, _T2 >::pair | ( | const pair< _U1, _U2 > & | __p | ) |

inline

There is also a templated copy ctor for the `pair` class itself.

Definition at line 124 of file stl_pair.h.

## Member Data Documentation

template<class _T1, class _T2>

_T1 std::pair< _T1, _T2 >::first

`second_type` is the second bound type

Definition at line 101 of file stl_pair.h.

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

template<class _T1, class _T2>

_T2 std::pair< _T1, _T2 >::second

`first` is a copy of the first object

Definition at line 102 of file stl_pair.h.

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

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

- stl_pair.h
- tuple