Arene Base
Fundamental Utilities For Safety Critical C++
Loading...
Searching...
No Matches
std::tuple_detail Namespace Reference

Typedef Documentation

◆ tuple_leaf_t

template<std::size_t I, class Tuple>
using std::tuple_detail::tuple_leaf_t = tuple_leaf<I, tuple_element_t<I, Tuple>>

alias to the tuple leaf type at index I of a tuple

Template Parameters
Ileaf index
Tupletuple type, specialization of std::tuple

Function Documentation

◆ __get_tuple_impl()

template<class>
auto std::tuple_detail::__get_tuple_impl ( ) -> void=delete
delete

poison pill declaration of __get_tuple_impl

This is to ensure that __get_tuple_impl only looks for a function declaration and does not pick up some other global object named __get_tuple_impl .

◆ elements_equal()

template<std::size_t Idx, class... LTypes, class... RTypes, ::arene::base::constraints< enable_if_t< Idx==sizeof...(LTypes)> > = nullptr>
auto std::tuple_detail::elements_equal ( tuple< LTypes... > const & ,
tuple< RTypes... > const &  ) -> bool
constexprnoexcept

Check if element Idx and all subsequent elements of the two tuples are equal.

Template Parameters
IdxThe Idx to begin checking at
LTypesThe parameter types of the left tuple
RTypesThe parameter types of the right tuple
Returns
true if element Idx and all subsequent elements of the two tuples are equal

◆ elements_less()

template<std::size_t Idx, class... LTypes, class... RTypes, ::arene::base::constraints< enable_if_t< Idx==sizeof...(LTypes)> > = nullptr>
auto std::tuple_detail::elements_less ( tuple< LTypes... > const & ,
tuple< RTypes... > const &  ) -> bool
constexprnoexcept

Check if the left tuple is less than the right tuple, starting at Idx and counting up.

Template Parameters
IdxThe Idx to begin checking at
LTypesThe parameter types of the left tuple
RTypesThe parameter types of the right tuple
Returns
true if get<Idx>(left) < get<Idx>(right) or if they're equal and elements_less<Idx + 1>(left, right)

◆ memberwise_forward_assign()

template<class Dest, class Source, std::size_t... Indices>
void std::tuple_detail::memberwise_forward_assign ( Dest & dest,
Source && source,
index_sequence< Indices... >  )

helper used to implement move assignment

Template Parameters
DestThe tuple to copy assign to
SourceThe tuple to copy assign from
IndicesParameter pack of indices for indexing the tuples
Parameters
destThe destination tuple
sourceThe source tuple

◆ memberwise_swap()

template<class Lhs, class Rhs, std::size_t... Indices>
void std::tuple_detail::memberwise_swap ( Lhs & lhs,
Rhs && rhs,
index_sequence< Indices... >  )

helper used to implement swap

Template Parameters
LhsThe type of the first tuple to swap
RhsThe type of the second tuple to swap
IndicesParameter pack of indices for indexing the tuples
Parameters
lhsThe first tupe to swap
rhsThe second tupe to swap

Variable Documentation

◆ all_elements_nothrow_equality_comparable_v

template<class LTuple, class RTuple>
bool std::tuple_detail::all_elements_nothrow_equality_comparable_v {false}
constexpr

A type trait to determine the noexcept specification of elementwise equality comparison.

Template Parameters
LTupleThe left tuple to elementwise compare
RTupleThe right tuple to elementwise compare

◆ all_elements_nothrow_equality_comparable_v< tuple< LTypes... >, tuple< RTypes... > >

template<class... LTypes, class... RTypes>
bool std::tuple_detail::all_elements_nothrow_equality_comparable_v< tuple< LTypes... >, tuple< RTypes... > >
constexpr
Initial value:
constexpr bool all_of_v
Trait which tests if every value in a parameter pack is true .
constexpr bool is_nothrow_equality_comparable_v

A type trait to determine the noexcept specification of elementwise equality comparison.

Template Parameters
LTypesThe element types of the left tuple to elementwise compare
RTypesThe element types of the right tuple to elementwise compare

◆ all_elements_nothrow_less_than_comparable_v

template<class LTuple, class RTuple>
bool std::tuple_detail::all_elements_nothrow_less_than_comparable_v {false}
constexpr

A type trait to determine the noexcept specification of elementwise less-than comparison.

Template Parameters
LTupleThe left tuple to elementwise compare
RTupleThe right tuple to elementwise compare

◆ all_elements_nothrow_less_than_comparable_v< tuple< LTypes... >, tuple< RTypes... > >

A type trait to determine the noexcept specification of elementwise less-than comparison.

Template Parameters
LTypesThe element types of the left tuple to elementwise compare
RTypesThe element types of the right tuple to elementwise compare

◆ bool

template<std::size_t Idx, class... LTypes, class... RTypes>
std::tuple_detail::bool
Initial value:
{
return (get<Idx>(left) == get<Idx>(right)) && ::std::tuple_detail::elements_equal<Idx + 1UL>(left, right)
constexpr auto elements_equal(tuple< LTypes... > const &, tuple< RTypes... > const &) noexcept -> bool
Check if element Idx and all subsequent elements of the two tuples are equal.
Definition tuple.hpp:620
constexpr auto get(pair< T1, T2 > &values) noexcept -> tuple_element_t< I, pair< T1, T2 > > &
access an element of a pair
Definition pair.hpp:659

Check if element Idx and all subsequent elements of the two tuples are equal.

Check if the left tuple is less than the right tuple, starting at Idx and counting up.

Template Parameters
IdxThe Idx to begin checking at
LTypesThe parameter types of the left tuple
RTypesThe parameter types of the right tuple
Parameters
leftThe left tuple
rightThe right tuple
Returns
true if element Idx and all subsequent elements of the two tuples are equal
Template Parameters
IdxThe Idx to begin checking at
LTypesThe parameter types of the left tuple
RTypesThe parameter types of the right tuple
Parameters
leftThe left tuple
rightThe right tuple
Returns
true if get<Idx>(left) < get<Idx>(right) or if they're equal and elements_less<Idx + 1>(left, right)