libstdc++: Utilities

libstdc++

Utilities
Collaboration diagram for Utilities:

## Topics
| Concepts
| Function Objects
| Memory
| Metaprogramming
| Rational Arithmetic
| Time

## Classes
class | std::bitset< _Nb >
struct | std::pair< _T1, _T2 >
struct | std::piecewise_construct_t
class | std::tuple< _Elements >
class | std::tuple< _T1, _T2 >
struct | std::tuple_element< __i, tuple< _Types... > >
struct | std::tuple_size< tuple< _Elements... > >
struct | std::type_index
struct | std::uses_allocator< tuple< _Types... >, _Alloc >

## Typedefs
template<typename _Tp, typename _Up>
using | std::__like_t

## Functions
template<typename... _Args1, typename... _Args2>
constexpr | std::pair< _T1, _T2 >::pair (piecewise_construct_t, tuple< _Args1... >, tuple< _Args2... >)
template<typename _Tp>
constexpr _Tp * | std::__addressof (_Tp &__r) noexcept
template<typename _Tp, typename _Up = _Tp>
constexpr _Tp | std::__exchange (_Tp &__obj, _Up &&__new_val)
template<size_t __i, typename _Head, typename... _Tail>
constexpr _Head & | std::__get_helper (_Tuple_impl< __i, _Head, _Tail... > &__t) noexcept
template<size_t __i, typename _Head, typename... _Tail>
constexpr const _Head & | std::__get_helper (const _Tuple_impl< __i, _Head, _Tail... > &__t) noexcept
template<size_t __i, typename... _Types>
__enable_if_t<(__i >=sizeof...(_Types))> | std::__get_helper (const tuple< _Types... > &)=delete
template<typename _Tp, typename _Up = typename __inv_unwrap<_Tp>::type>
constexpr _Up && | std::__invfwd (typename remove_reference< _Tp >::type &__t) noexcept
template<typename _Callable, typename... _Args>
constexpr __invoke_result< _Callable, _Args... >::type | std::__invoke (_Callable &&__fn, _Args &&... __args) noexcept(__is_nothrow_invocable< _Callable, _Args... >::value)
template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
constexpr _Res | std::__invoke_impl (__invoke_memfun_deref, _MemFun &&__f, _Tp &&__t, _Args &&... __args)
template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>
constexpr _Res | std::__invoke_impl (__invoke_memfun_ref, _MemFun &&__f, _Tp &&__t, _Args &&... __args)
template<typename _Res, typename _MemPtr, typename _Tp>
constexpr _Res | std::__invoke_impl (__invoke_memobj_deref, _MemPtr &&__f, _Tp &&__t)
template<typename _Res, typename _MemPtr, typename _Tp>
constexpr _Res | std::__invoke_impl (__invoke_memobj_ref, _MemPtr &&__f, _Tp &&__t)
template<typename _Res, typename _Fn, typename... _Args>
constexpr _Res | std::__invoke_impl (__invoke_other, _Fn &&__f, _Args &&... __args)
template<typename _Res, typename _Callable, typename... _Args>
constexpr enable_if_t< is_invocable_r_v< _Res, _Callable, _Args... >, _Res > | std::__invoke_r (_Callable &&__fn, _Args &&... __args) noexcept(is_nothrow_invocable_r_v< _Res, _Callable, _Args... >)
template<typename _Cat, typename _Tp, typename _Up, typename _IndexSeq>
constexpr _Cat | std::__tuple_cmp (const _Tp &__t, const _Up &__u, _IndexSeq __indices)
template<typename _Tp>
constexpr _Tp * | std::addressof (_Tp &__r) noexcept
template<typename _Tp>
const _Tp * | std::addressof (const _Tp &&)=delete
template<typename _Tp>
auto | std::declval () noexcept -> decltype(__declval< _Tp >(0))
template<typename _Tp>
constexpr _Tp && | std::forward (typename std::remove_reference< _Tp >::type &&__t) noexcept
template<typename _Tp>
constexpr _Tp && | std::forward (typename std::remove_reference< _Tp >::type &__t) noexcept
template<typename... _Elements>
constexpr tuple< _Elements &&... > | std::forward_as_tuple (_Elements &&... __args) noexcept
template<typename _Tp, typename _Up>
constexpr __like_t< _Tp, _Up > | std::forward_like (_Up &&__x) noexcept
template<size_t __i, typename... _Elements>
constexpr const __tuple_element_t< __i, tuple< _Elements... > > && | std::get (const tuple< _Elements... > &&__t) noexcept
template<size_t __i, typename... _Elements>
constexpr const __tuple_element_t< __i, tuple< _Elements... > > & | std::get (const tuple< _Elements... > &__t) noexcept
template<size_t __i, typename... _Elements>
constexpr __tuple_element_t< __i, tuple< _Elements... > > && | std::get (tuple< _Elements... > &&__t) noexcept
template<size_t __i, typename... _Elements>
constexpr __tuple_element_t< __i, tuple< _Elements... > > & | std::get (tuple< _Elements... > &__t) noexcept
template<typename _T1, typename _T2>
constexpr pair< typename __decay_and_strip< _T1 >::__type, typename __decay_and_strip< _T2 >::__type > | std::make_pair (_T1 &&__x, _T2 &&__y)
template<typename... _Elements>
constexpr tuple< typename __decay_and_strip< _Elements >::__type... > | std::make_tuple (_Elements &&... __args)
template<typename _Tp>
constexpr std::remove_reference< _Tp >::type && | std::move (_Tp &&__t) noexcept
template<typename _Tp>
constexpr __conditional_t< __move_if_noexcept_cond< _Tp >::value, const _Tp &, _Tp && > | std::move_if_noexcept (_Tp &__x) noexcept
template<typename... _Tps, typename... _Ups>
constexpr common_comparison_category_t< __detail::__synth3way_t< _Tps, _Ups >... > | std::operator<=> (const tuple< _Tps... > &__t, const tuple< _Ups... > &__u)
template<typename... _Tps, typename... _Ups>
constexpr bool | std::operator== (const tuple< _Tps... > &__t, const tuple< _Ups... > &__u)
template<typename _Tp>
constexpr void | std::swap (_Tp &__a, _Tp &__b) noexcept(/*conditional */) is_nothrow_move_assignable< _Tp > >
template<typename _Tp, size_t _Nm>
constexpr void | std::swap (_Tp(&__a)[_Nm], _Tp(&__b)[_Nm]) noexcept(/*conditional */)
template<typename... _Elements>
constexpr enable_if< __and_< __is_swappable< _Elements >... >::value >::type | std::swap (tuple< _Elements... > &__x, tuple< _Elements... > &__y) noexcept(noexcept(__x.swap(__y)))
template<typename... _Elements>
constexpr tuple< _Elements &... > | std::tie (_Elements &... __args) noexcept
template<typename... _UTypes>
| std::tuple (_UTypes...) -> tuple< _UTypes... >
template<typename _Alloc, typename... _UTypes>
| std::tuple (allocator_arg_t, _Alloc, _UTypes...) -> tuple< _UTypes... >
template<typename _Alloc, typename _T1, typename _T2>
| std::tuple (allocator_arg_t, _Alloc, pair< _T1, _T2 >) -> tuple< _T1, _T2 >
template<typename _Alloc, typename... _UTypes>
| std::tuple (allocator_arg_t, _Alloc, tuple< _UTypes... >) -> tuple< _UTypes... >
template<typename _T1, typename _T2>
| std::tuple (pair< _T1, _T2 >) -> tuple< _T1, _T2 >
template<typename... _Tpls, typename = typename enable_if<__and_<__is_tuple_like<_Tpls>...>::value>::type>
constexpr auto | std::tuple_cat (_Tpls &&... __tpls) -> typename __tuple_cat_result< _Tpls... >::__type

## Variables
constexpr piecewise_construct_t | std::piecewise_construct
template<typename... _Types>
constexpr size_t | std::tuple_size_v< const tuple< _Types... > >
template<typename... _Types>
constexpr size_t | std::tuple_size_v< tuple< _Types... > >
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)
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)))
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)))
template<typename _T1, typename _T2, typename _U1, typename _U2>
constexpr bool | operator== (const pair< _T1, _T2 > &__x, const pair< _U1, _U2 > &__y)
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)

## Detailed Description

Basic function and class templates used with the rest of the library. Includes pair, swap, forward/move helpers, declval, integer_sequence.

## Typedef Documentation

## ◆ __like_t

template<typename _Tp, typename _Up>

using std::__like_t

Definition at line 112 of file move.h.

## Function Documentation

## ◆ pair() [1/2]

template<typename _T1, typename _T2>

pair | ( | _T1 | ,
|  | _T2 | ) -> pair< _T1, _T2 >
| related

Two pairs are equal iff their members are equal.

## ◆ pair() [2/2]

template<class _T1, class _T2>
template<typename... _Args1, typename... _Args2>

std::pair< _T1, _T2 >::pair | ( | piecewise_construct_t | ,
|  | tuple< _Args1... > | __first,
|  | tuple< _Args2... > | __second )
| inlineconstexpr

"piecewise construction" using a tuple of arguments for each member.

Parameters

  __first | Arguments for the first member of the pair.
  __second | Arguments for the second member of the pair.

The elements of each tuple will be used as the constructor arguments for the data members of the pair.

Definition at line 2890 of file tuple.

References pair().

## ◆ __addressof()

template<typename _Tp>

_Tp * std::__addressof | ( | _Tp & | __r | ) |
| inlineconstexprnoexcept

Same as C++11 std::addressof.

Definition at line 52 of file move.h.

Referenced by std::back_insert_iterator< _Container >::back_insert_iterator(), std::basic_istringstream< char >::basic_istringstream(), std::basic_istringstream< char >::basic_istringstream(), std::basic_istringstream< char >::basic_istringstream(), std::basic_ostringstream< char >::basic_ostringstream(), std::basic_ostringstream< char >::basic_ostringstream(), std::basic_ostringstream< char >::basic_ostringstream(), std::basic_stringstream< char >::basic_stringstream(), std::basic_stringstream< char >::basic_stringstream(), std::basic_stringstream< char >::basic_stringstream(), std::front_insert_iterator< _Container >::front_insert_iterator(), std::insert_iterator< _Container >::insert_iterator(), std::istream_iterator< _Tp, _CharT, _Traits, _Dist >::istream_iterator(), std::ostream_iterator< _Tp, _CharT, _Traits >::ostream_iterator(), std::ostream_iterator< _Tp, _CharT, _Traits >::ostream_iterator(), __gnu_debug::_Safe_sequence< _Sequence >::_M_transfer_from_if(), std::basic_ios< _CharT, _Traits >::copyfmt(), std::forward_list< _Tp, _Alloc >::merge(), std::list< _Tp, _Alloc >::merge(), std::list< _Tp, _Alloc >::merge(), std::sub_match< const char * >::operator<<(), __gnu_debug::_Safe_iterator< _Base_iterator, map >::operator=(), __gnu_debug::_Safe_local_iterator< _OtherIterator, _UContainer >::operator=(), std::basic_string< _CharT >::operator=(), std::deque< _Tp, _Alloc >::operator=(), std::forward_list< _Tp, _Alloc >::operator=(), std::list< _Tp, _Alloc >::operator=(), std::vector< _Tp, _Alloc >::operator=(), std::sub_match< const char * >::operator==(), std::basic_istringstream< char >::rdbuf(), std::basic_ostringstream< char >::rdbuf(), std::basic_stringstream< char >::rdbuf(), std::list< _Tp, polymorphic_allocator< _Tp > >::splice(), and std::list< _Tp, polymorphic_allocator< _Tp > >::splice().

## ◆ __exchange()

template<typename _Tp, typename _Up = _Tp>

_Tp std::__exchange | ( | _Tp & | __obj,
|  | _Up && | __new_val )
| inlineconstexpr

Definition at line 188 of file move.h.

## ◆ __get_helper() [1/2]

template<size_t __i, typename _Head, typename... _Tail>

_Head & std::__get_helper | ( | _Tuple_impl< __i, _Head, _Tail... > & | __t | ) |
| constexprnoexcept

Definition at line 2446 of file tuple.

## ◆ __get_helper() [2/2]

template<size_t __i, typename _Head, typename... _Tail>

const _Head & std::__get_helper | ( | const _Tuple_impl< __i, _Head, _Tail... > & | __t | ) |
| constexprnoexcept

Definition at line 2451 of file tuple.

## ◆ __invfwd()

template<typename _Tp, typename _Up = typename __inv_unwrap<_Tp>::type>

_Up && std::__invfwd | ( | typename remove_reference< _Tp >::type & | __t | ) |
| constexprnoexcept

Definition at line 57 of file invoke.h.

## ◆ __invoke()

template<typename _Callable, typename... _Args>

__invoke_result< _Callable, _Args... >::type std::__invoke | ( | _Callable && | __fn,
|  | _Args &&... | __args )
| constexprnoexcept

Invoke a callable object.

Definition at line 92 of file invoke.h.

References forward().

Referenced by std::function_ref< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::function_ref(), and std::once_flag::call_once.

## ◆ __invoke_impl() [1/5]

template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>

_Res std::__invoke_impl | ( | __invoke_memfun_deref | ,
|  | _MemFun && | __f,
|  | _Tp && | __t,
|  | _Args &&... | __args )
| constexpr

Definition at line 73 of file invoke.h.

## ◆ __invoke_impl() [2/5]

template<typename _Res, typename _MemFun, typename _Tp, typename... _Args>

_Res std::__invoke_impl | ( | __invoke_memfun_ref | ,
|  | _MemFun && | __f,
|  | _Tp && | __t,
|  | _Args &&... | __args )
| constexpr

Definition at line 67 of file invoke.h.

## ◆ __invoke_impl() [3/5]

template<typename _Res, typename _MemPtr, typename _Tp>

_Res std::__invoke_impl | ( | __invoke_memobj_deref | ,
|  | _MemPtr && | __f,
|  | _Tp && | __t )
| constexpr

Definition at line 86 of file invoke.h.

## ◆ __invoke_impl() [4/5]

template<typename _Res, typename _MemPtr, typename _Tp>

_Res std::__invoke_impl | ( | __invoke_memobj_ref | ,
|  | _MemPtr && | __f,
|  | _Tp && | __t )
| constexpr

Definition at line 81 of file invoke.h.

## ◆ __invoke_impl() [5/5]

template<typename _Res, typename _Fn, typename... _Args>

_Res std::__invoke_impl | ( | __invoke_other | ,
|  | _Fn && | __f,
|  | _Args &&... | __args )
| constexpr

Definition at line 62 of file invoke.h.

## ◆ __invoke_r()

template<typename _Res, typename _Callable, typename... _Args>

enable_if_t< is_invocable_r_v< _Res, _Callable, _Args... >, _Res > std::__invoke_r | ( | _Callable && | __fn,
|  | _Args &&... | __args )
| constexprnoexcept

Definition at line 106 of file invoke.h.

## ◆ __tuple_cmp()

template<typename _Cat, typename _Tp, typename _Up, typename _IndexSeq>

_Cat std::__tuple_cmp | ( | const _Tp & | __t,
|  | const _Up & | __u,
|  | _IndexSeq | __indices )
| nodiscardconstexpr

Definition at line 2562 of file tuple.

## ◆ addressof()

template<typename _Tp>

_Tp * std::addressof | ( | _Tp & | __r | ) |
| inlineconstexprnoexcept

Returns the actual address of the object or function referenced by r, even in the presence of an overloaded operator&.

Parameters

  __r | Reference to an object or function.

Returns
  The actual address.

Since
  C++11

Definition at line 176 of file move.h.

Referenced by std::function_ref< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::function_ref(), std::function_ref< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::function_ref(), _Destroy(), _Destroy_n(), std::copyable_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator=(), and std::move_only_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator=().

## ◆ declval()

template<typename _Tp>

auto std::declval | ( |  | ) | -> decltype(__declval< _Tp >(0))
| noexcept

Utility to simplify expressions used in unevaluated operands

Since
  C++11

Definition at line 2741 of file type_traits.

Referenced by std::vector< _Tp, polymorphic_allocator< _Tp > >::vector(), and std::unique_ptr< _State >::operator*().

## ◆ forward() [1/2]

template<typename _Tp>

_Tp && std::forward | ( | typename std::remove_reference< _Tp >::type && | __t | ) |
| constexprnoexcept

Forward an rvalue.

Returns
  The parameter cast to the specified type.

This function is used to implement "perfect forwarding".

Since
  C++11

Definition at line 85 of file move.h.

## ◆ forward() [2/2]

template<typename _Tp>

_Tp && std::forward | ( | typename std::remove_reference< _Tp >::type & | __t | ) |
| constexprnoexcept

Forward an lvalue.

Returns
  The parameter cast to the specified type.

This function is used to implement "perfect forwarding".

Since
  C++11

Definition at line 72 of file move.h.

Referenced by std::experimental::fundamentals_v1::any::any(), std::copyable_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::copyable_function(), std::copyable_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::copyable_function(), std::copyable_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::copyable_function(), std::function< _Res(_ArgTypes...)>::function(), std::function_ref< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::function_ref(), std::move_only_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::move_only_function(), std::move_only_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::move_only_function(), std::move_only_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::move_only_function(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::pair(), std::unique_ptr< _State >::unique_ptr(), __invoke(), _Construct(), std::list< _Tp, polymorphic_allocator< _Tp > >::_M_create_node(), std::deque< _Tp, _Alloc >::_M_push_back_aux(), std::deque< _Tp, _Alloc >::_M_push_front_aux(), std::shared_ptr< _State_base >::allocate_shared(), async(), async(), bind(), std::once_flag::call_once, std::allocator_traits< _OuterAlloc >::construct(), std::allocator_traits< allocator< _Tp > >::construct(), std::allocator_traits< allocator< void > >::construct(), std::allocator_traits< pmr::polymorphic_allocator< _Tp > >::construct(), std::deque< _Tp, _Alloc >::emplace(), std::list< _Tp, _Alloc >::emplace(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace(), std::multiset< _Key, _Cmp, polymorphic_allocator< _Key > >::emplace(), std::set< _Key, _Cmp, polymorphic_allocator< _Key > >::emplace(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace(), std::unordered_multimap< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace(), std::unordered_multiset< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::emplace(), std::unordered_set< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::emplace(), std::vector< _Tp, polymorphic_allocator< _Tp > >::emplace(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::emplace_after(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::emplace_front(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace_hint(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace_hint(), std::multiset< _Key, _Cmp, polymorphic_allocator< _Key > >::emplace_hint(), std::set< _Key, _Cmp, polymorphic_allocator< _Key > >::emplace_hint(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace_hint(), std::unordered_multimap< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::emplace_hint(), std::unordered_multiset< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::emplace_hint(), std::unordered_set< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::emplace_hint(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::explicit(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::explicit(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::explicit(), forward_as_tuple(), get(), get(), get(), get(), get(), get(), inout_ptr(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_multimap< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_multimap< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_set< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::insert(), std::unordered_set< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::insert(), std::experimental::make_array(), std::experimental::make_ostream_joiner(), make_pair(), std::shared_ptr< _State_base >::make_shared(), make_tuple(), std::experimental::not_fn(), std::copyable_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator()(), std::function< _Res(_ArgTypes...)>::operator()(), std::function_ref< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator()(), std::move_only_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator()(), std::copyable_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator=(), std::experimental::fundamentals_v1::any::operator=(), std::function< _Res(_ArgTypes...)>::operator=(), std::move_only_function< _Res(_ArgTypes...) _GLIBCXX_MOF_CV noexcept(_Noex)>::operator=(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::operator=(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::operator=(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::operator=(), std::pair< const __iter_key_t< _InputIterator >, __iter_val_t< _InputIterator > >::operator=(), std::unique_ptr< _State >::operator=(), std::unique_ptr< _Tp[], _Dp >::operator=(), operator>>(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::operator[](), out_ptr(), std::basic_string< _CharT, std::char_traits< _CharT >, std::allocator< _CharT > >::reserve(), std::experimental::sample(), sample(), throw_with_nested(), and tuple_cat().

## ◆ forward_as_tuple()

template<typename... _Elements>

tuple< _Elements &&... > std::forward_as_tuple | ( | _Elements &&... | __args | ) |
| constexprnoexcept

Create a tuple of lvalue or rvalue references to the arguments.

Definition at line 2698 of file tuple.

References forward().

## ◆ forward_like()

template<typename _Tp, typename _Up>

__like_t< _Tp, _Up > std::forward_like | ( | _Up && | __x | ) |
| nodiscardconstexprnoexcept

Forward with the cv-qualifiers and value category of another type.

Template Parameters

  _Tp | An lvalue reference or rvalue reference.
  _Up | An lvalue reference type deduced from the function argument.

Parameters

  __x | An lvalue.

Returns
  __x converted to match the qualifiers of _Tp.

Since
  C++23

Definition at line 125 of file move.h.

## ◆ get() [1/4]

template<size_t __i, typename... _Elements>

const __tuple_element_t< __i, tuple< _Elements... > > && std::get | ( | const tuple< _Elements... > && | __t | ) |
| constexprnoexcept

Return a const rvalue reference to the ith element of a const tuple rvalue.

Definition at line 2483 of file tuple.

References forward().

## ◆ get() [2/4]

template<size_t __i, typename... _Elements>

const __tuple_element_t< __i, tuple< _Elements... > > & std::get | ( | const tuple< _Elements... > & | __t | ) |
| constexprnoexcept

Return a const reference to the ith element of a const tuple.

Definition at line 2468 of file tuple.

## ◆ get() [3/4]

template<size_t __i, typename... _Elements>

__tuple_element_t< __i, tuple< _Elements... > > && std::get | ( | tuple< _Elements... > && | __t | ) |
| constexprnoexcept

Return an rvalue reference to the ith element of a tuple rvalue.

Definition at line 2474 of file tuple.

References forward().

## ◆ get() [4/4]

template<size_t __i, typename... _Elements>

__tuple_element_t< __i, tuple< _Elements... > > & std::get | ( | tuple< _Elements... > & | __t | ) |
| constexprnoexcept

Return a reference to the ith element of a tuple.

Definition at line 2462 of file tuple.

## ◆ make_pair()

template<typename _T1, typename _T2>

pair< typename __decay_and_strip< _T1 >::__type, typename __decay_and_strip< _T2 >::__type > std::make_pair | ( | _T1 && | __x,
|  | _T2 && | __y )
| constexpr

A convenience wrapper for creating a pair from two objects.

Parameters

  __x | The first object.
  __y | The second object.

Returns
  A newly-constructed pair<> object of the appropriate type.

The C++98 standard says the objects are passed by reference-to-const, but C++03 says they are passed by value (this was LWG issue #181).

Since C++11 they have been passed by forwarding reference and then forwarded to the new members of the pair. To create a pair with a member of reference type, pass a reference_wrapper to this function.

Definition at line 1169 of file stl_pair.h.

References forward().

Referenced by __gnu_parallel::__find_template(), __gen_two_uniform_ints(), __gnu_debug::__get_distance(), __gnu_parallel::__parallel_merge_advance(), __gnu_parallel::__parallel_sort_qsb(), __gnu_parallel::__qsb_local_sort_with_helping(), __gnu_parallel::__adjacent_find_selector::_M_sequential_algorithm(), __gnu_parallel::__find_first_of_selector< _FIterator >::_M_sequential_algorithm(), __gnu_parallel::__find_if_selector::_M_sequential_algorithm(), __gnu_parallel::multiseq_partition(), __gnu_parallel::multiseq_selection(), __gnu_parallel::parallel_multiway_merge(), __gnu_parallel::parallel_sort_mwms_pu(), and __gnu_pbds::detail::pat_trie_base::_Node_citer< node, leaf, head, inode, const_iterator, iterator, _Alloc >::valid_prefix().

## ◆ make_tuple()

template<typename... _Elements>

tuple< typename __decay_and_strip< _Elements >::__type... > std::make_tuple | ( | _Elements &&... | __args | ) |
| constexpr

Create a tuple containing copies of the arguments.

Definition at line 2686 of file tuple.

References forward().

## ◆ move()

template<typename _Tp>

std::remove_reference< _Tp >::type && std::move | ( | _Tp && | __t | ) |
| constexprnoexcept

Convert a value to an rvalue.

Parameters

  __t | A thing of arbitrary type.

Returns
  The parameter cast to an rvalue-reference to allow moving it.

Since
  C++11

Definition at line 138 of file move.h.

Referenced by __gnu_cxx::__versa_string< char >::__versa_string(), std::basic_string< _CharT >::basic_string(), std::deque< _Tp, polymorphic_allocator< _Tp > >::deque(), std::discard_block_engine< ranlux24_base, 223, 23 >::discard_block_engine(), std::tr2::dynamic_bitset< _WordT, _Alloc >::dynamic_bitset(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::forward_list(), std::future< _Res >::future(), std::future< _Res & >::future(), std::future< void >::future(), std::independent_bits_engine< _RandomNumberEngine, __w, _UIntType >::independent_bits_engine(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::map(), std::match_results< _BidirectionalIterator, polymorphic_allocator< sub_match< _BidirectionalIterator > > >< const char * >::match_results(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::multimap(), std::multiset< _Key, _Cmp, polymorphic_allocator< _Key > >::multiset(), std::priority_queue< _Tp, _Sequence, _Compare >::priority_queue(), std::set< _Key, _Cmp, polymorphic_allocator< _Key > >::set(), std::shared_future< _Res >::shared_future(), std::shared_future< _Res >::shared_future(), std::shared_future< _Res & >::shared_future(), std::shared_future< _Res & >::shared_future(), std::shared_future< void >::shared_future(), std::shared_future< void >::shared_future(), std::shared_ptr< _State_base >::shared_ptr(), std::shared_ptr< _State_base >::shared_ptr(), std::shared_ptr< _State_base >::shared_ptr(), std::shared_ptr< _State_base >::shared_ptr(), std::shared_ptr< _State_base >::shared_ptr(), std::shared_ptr< _State_base >::shared_ptr(), std::shared_ptr< _State_base >::shared_ptr(), std::shuffle_order_engine< minstd_rand0, 256 >::shuffle_order_engine(), std::unique_ptr< _State >::unique_ptr(), std::unique_ptr< _Tp[], _Dp >::unique_ptr(), std::vector< _Tp, polymorphic_allocator< _Tp > >::vector(), std::unique_ptr< _State >::~unique_ptr(), std::experimental::any_cast(), std::basic_regex< char >::assign(), std::basic_string< _CharT >::assign(), async(), atomic_compare_exchange_strong(), atomic_compare_exchange_strong(), atomic_compare_exchange_strong_explicit(), atomic_compare_exchange_strong_explicit(), atomic_compare_exchange_weak(), atomic_compare_exchange_weak(), atomic_compare_exchange_weak_explicit(), atomic_compare_exchange_weak_explicit(), atomic_exchange(), atomic_exchange(), atomic_store(), atomic_store(), std::shared_ptr< _State_base >::const_pointer_cast(), copy_n(), distance(), std::shared_ptr< _State_base >::dynamic_pointer_cast(), exclusive_scan(), exclusive_scan(), for_each_n(), std::future< _Res >::get(), get(), get(), inclusive_scan(), std::deque< _Tp, polymorphic_allocator< _Tp > >::insert(), std::list< _Tp, polymorphic_allocator< _Tp > >::insert(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::multimap< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::set< _Key, _Cmp, polymorphic_allocator< _Key > >::insert(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_multimap< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_multimap< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::insert(), std::unordered_multiset< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::insert(), std::unordered_multiset< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::insert(), std::unordered_set< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::insert(), std::unordered_set< _Key, _Hash, _Pred, polymorphic_allocator< _Key > >::insert(), std::vector< _Tp, _Alloc >::insert(), std::vector< _Tp, polymorphic_allocator< _Tp > >::insert(), std::experimental::make_boyer_moore_horspool_searcher(), std::experimental::make_boyer_moore_searcher(), std::forward_list< _Tp, _Alloc >::merge(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::merge(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::merge(), std::list< _Tp, polymorphic_allocator< _Tp > >::merge(), std::list< _Tp, polymorphic_allocator< _Tp > >::merge(), move_if_noexcept(), std::tr2::dynamic_bitset< _WordT, _Alloc >::operator&=(), std::chrono::operator<<(), std::deque< _Tp, polymorphic_allocator< _Tp > >::operator=(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::operator=(), std::function< _Res(_ArgTypes...)>::operator=(), std::list< _Tp, polymorphic_allocator< _Tp > >::operator=(), std::vector< _Tp, polymorphic_allocator< _Tp > >::operator=(), std::filesystem::path::operator>>, operator>>(), std::unordered_map< _Key, _Tp, _Hash, _Pred, polymorphic_allocator< pair< const _Key, _Tp > > >::operator[](), reduce(), std::shared_ptr< _State_base >::reinterpret_pointer_cast(), std::unique_ptr< _State >::reset(), std::unique_ptr< _Tp[], _Dp >::reset(), std::list< _Tp, polymorphic_allocator< _Tp > >::splice(), std::list< _Tp, polymorphic_allocator< _Tp > >::splice(), std::forward_list< _Tp, polymorphic_allocator< _Tp > >::splice_after(), std::shared_ptr< _State_base >::static_pointer_cast(), transform_exclusive_scan(), transform_inclusive_scan(), and transform_reduce().

## ◆ move_if_noexcept()

template<typename _Tp>

__conditional_t< __move_if_noexcept_cond< _Tp >::value, const _Tp &, _Tp && > std::move_if_noexcept | ( | _Tp & | __x | ) |
| constexprnoexcept

Conditionally convert a value to an rvalue.

Parameters

  __x | A thing of arbitrary type.

Returns
  The parameter, possibly cast to an rvalue-reference.

Same as std::move unless the type's move constructor could throw and the type is copyable, in which case an lvalue-reference is returned instead.

Since
  C++11

Definition at line 160 of file move.h.

References move().

## ◆ operator<=>() [1/3]

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

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

Defines a lexicographical order for pairs.

For two pairs of comparable types, P is ordered before Q if P.first is less than Q.first, or if P.first and Q.first are equivalent (neither is less than the other) and P.second is less than Q.second.

Definition at line 1050 of file stl_pair.h.

## ◆ operator<=>() [2/3]

template<typename... _Tps, typename... _Ups>

common_comparison_category_t< __detail::__synth3way_t< _Tps, _Ups >... > std::operator<=> | ( | const tuple< _Tps... > & | __t,
|  | const tuple< _Ups... > & | __u )
| nodiscardconstexpr

Definition at line 2584 of file tuple.

## ◆ operator<=>() [3/3]

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

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

Defines a lexicographical order for pairs.

For two pairs of comparable types, P is ordered before Q if P.first is less than Q.first, or if P.first and Q.first are equivalent (neither is less than the other) and P.second is less than Q.second.

Definition at line 1050 of file stl_pair.h.

## ◆ operator==() [1/3]

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

bool operator== | ( | const pair< _T1, _T2 > & | __x,
|  | const pair< _U1, _U2 > & | __y )
| related

Two pairs are equal iff their members are equal.

Definition at line 1034 of file stl_pair.h.

## ◆ operator==() [2/3]

template<typename... _Tps, typename... _Ups>

bool std::operator== | ( | const tuple< _Tps... > & | __t,
|  | const tuple< _Ups... > & | __u )
| nodiscardconstexpr

Definition at line 2550 of file tuple.

## ◆ operator==() [3/3]

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

bool operator== | ( | const pair< _T1, _T2 > & | __x,
|  | const pair< _U1, _U2 > & | __y )
| related

Two pairs are equal iff their members are equal.

Definition at line 1034 of file stl_pair.h.

## ◆ swap() [1/5]

template<typename _T1, typename _T2>

enable_if< __and_< __is_swappable< _T1 >, __is_swappable< _T2 > >::value >::type swap | ( | pair< _T1, _T2 > & | __x,
|  | pair< _T1, _T2 > & | __y )
| related

Swap overload for pairs. Calls std::pair::swap().

Note
  This std::swap overload is not declared in C++03 mode, which has performance implications, e.g. see https://gcc.gnu.org/PR38466

Definition at line 1124 of file stl_pair.h.

## ◆ swap() [2/5]

template<typename _T1, typename _T2>

enable_if< __and_< __is_swappable< _T1 >, __is_swappable< _T2 > >::value >::type swap | ( | pair< _T1, _T2 > & | __x,
|  | pair< _T1, _T2 > & | __y )
| related

Swap overload for pairs. Calls std::pair::swap().

Note
  This std::swap overload is not declared in C++03 mode, which has performance implications, e.g. see https://gcc.gnu.org/PR38466

Definition at line 1124 of file stl_pair.h.

## ◆ swap() [3/5]

template<typename _Tp>

void std::swap | ( | _Tp & | __a,
|  | _Tp & | __b )
| inlineconstexprnoexcept

Swaps two values.

Parameters

  __a | A thing of arbitrary type.
  __b | Another thing of arbitrary type.

Definition at line 230 of file move.h.

## ◆ swap() [4/5]

template<typename _Tp, size_t _Nm>

void std::swap | ( | _Tp(&) | __a[_Nm],
|  | _Tp(&) | __b[_Nm] )
| inlineconstexprnoexcept

Swap the contents of two arrays.

Definition at line 256 of file move.h.

## ◆ swap() [5/5]

template<typename... _Elements>

enable_if< __and_< __is_swappable< _Elements >... >::value >::type std::swap | ( | tuple< _Elements... > & | __x,
|  | tuple< _Elements... > & | __y )
| inlineconstexprdeletenoexcept

Exchange the values of two tuples.

Definition at line 2850 of file tuple.

## ◆ tie()

template<typename... _Elements>

tuple< _Elements &... > std::tie | ( | _Elements &... | __args | ) |
| constexprnoexcept

Return a tuple of lvalue references bound to the arguments.

Definition at line 2836 of file tuple.

Referenced by std::basic_ios< _CharT, _Traits >::copyfmt().

## ◆ tuple_cat()

template<typename... _Tpls, typename = typename enable_if<__and_<__is_tuple_like<_Tpls>...>::value>::type>

auto std::tuple_cat | ( | _Tpls &&... | __tpls | ) | -> typename __tuple_cat_result< _Tpls... >::__type
| constexpr

Create a tuple containing all elements from multiple tuple-like objects.

Definition at line 2822 of file tuple.

References forward().

## Variable Documentation

## ◆ piecewise_construct

piecewise_construct_t std::piecewise_construct
| inlineconstexpr

Tag for piecewise construction of std::pair objects.

Definition at line 82 of file stl_pair.h.

Referenced by std::map< _Key, _Tp, _Cmp, polymorphic_allocator< pair< const _Key, _Tp > > >::operator[]().

## ◆ tuple_size_v< const tuple< _Types... > >

template<typename... _Types>

size_t std::tuple_size_v< const tuple< _Types... > >
| inlineconstexpr

Definition at line 2431 of file tuple.

## ◆ tuple_size_v< tuple< _Types... > >

template<typename... _Types>

size_t std::tuple_size_v< tuple< _Types... > >
| inlineconstexpr

Definition at line 2427 of file tuple.