Template Struct pair

Struct Documentation

template<typename T1, typename T2>
struct pair

Public Types

using first_type = T1
using second_type = T2

Public Functions

template<typename U1 = T1, typename U2 = T2, typename = typename std::enable_if<std::is_default_constructible<U1>::value && std::is_default_constructible<U2>::value>::type>
inline constexpr pair() noexcept(noexcept(U1()) && noexcept(U2()))
inline explicit constexpr pair(std::pair<T1, T2> const &o) noexcept(noexcept(T1(std::declval<T1 const&>())) && noexcept(T2(std::declval<T2 const&>())))
inline explicit constexpr pair(std::pair<T1, T2> &&o) noexcept(noexcept(T1(std::move(std::declval<T1&&>()))) && noexcept(T2(std::move(std::declval<T2&&>()))))
inline constexpr pair(T1 &&a, T2 &&b) noexcept(noexcept(T1(std::move(std::declval<T1&&>()))) && noexcept(T2(std::move(std::declval<T2&&>()))))
template<typename U1, typename U2>
inline constexpr pair(U1 &&a, U2 &&b) noexcept(noexcept(T1(std::forward<U1>(std::declval<U1&&>()))) && noexcept(T2(std::forward<U2>(std::declval<U2&&>()))))
template<typename ...U1, typename ...U2>
inline constexpr pair(std::piecewise_construct_t, std::tuple<U1...> a, std::tuple<U2...> b) noexcept(noexcept(pair(std::declval<std::tuple<U1...>&>(), std::declval<std::tuple<U2...>&>(), ROBIN_HOOD_STD::index_sequence_for<U1...>(), ROBIN_HOOD_STD::index_sequence_for<U2...>())))
template<typename ...U1, size_t... I1, typename ...U2, size_t... I2>
inline pair(std::tuple<U1...> &a, std::tuple<U2...> &b, ROBIN_HOOD_STD::index_sequence<I1...>, ROBIN_HOOD_STD::index_sequence<I2...>) noexcept(noexcept(T1(std::forward<U1>(std::get<I1>(std::declval<std::tuple<U1...>&>()))...)) && noexcept(T2(std::forward<U2>(std::get<I2>(std::declval<std::tuple<U2...>&>()))...)))
inline void swap(pair<T1, T2> &o) noexcept((detail::swappable::nothrow<T1>::value)&&(detail::swappable::nothrow<T2>::value))

Public Members

T1 first
T2 second