|
template<typename Type > |
constexpr auto | not_a_number () noexcept |
|
template<std::size_t KeyIndex, typename Type , auto Index, auto... Indices> |
constexpr auto | get_nth_value (std::integer_sequence< Type, Index, Indices... >) noexcept |
|
template<typename CharType > |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, cpg::types::cHarsTR const &charstr) |
|
template<typename OperationType > |
| fold_visitor (OperationType) -> fold_visitor< OperationType > |
|
template<typename OperationType , typename DelimiterType > |
| fold_visitor (auto, OperationType, DelimiterType) -> fold_visitor< OperationType, DelimiterType > |
|
template<typename OperationType , typename DelimiterOpen , typename DelimiterType , typename DelimiterClose > |
| fold_visitor (auto arg_count, OperationType opr, DelimiterOpen d_open, DelimiterType del, DelimiterClose d_close) -> fold_visitor< OperationType, DelimiterOpen, DelimiterType, DelimiterClose > |
|
void | print_args_inorder (auto &&... args) |
|
void | print_args_reverse (auto &&... args) |
|
template<typename Type > |
std::string | type_tO_sTring () |
|
template<typename CharType > |
void | display_nontypes (std::basic_ostream< CharType > &os, nontype_container<>) noexcept |
|
template<typename CharType , auto arg, auto... args> |
void | display_nontypes (std::basic_ostream< CharType > &os, nontype_container< arg, args... >) noexcept |
|
template<typename CharType , auto... args> |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, nontype_container< args... >) noexcept |
|
template<typename CharType , auto... args> |
std::basic_ostream< CharType > & | operator>> (std::basic_ostream< CharType > &os, nontype_container< args... > nc) noexcept |
|
template<std::size_t Index, auto arg, auto... args> |
constexpr auto | get (nontype_container< arg, args... >) noexcept |
|
template<typename FuncType , typename Type > |
constexpr auto | return_type (FuncType func, Type) |
|
template<typename FuncType , typename Type > |
constexpr auto | argument_count (FuncType func, Type) |
|
template<typename CharType , typename Type > |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, range< Type > const &r) |
|
template<typename Type > |
| range (Type) -> range< Type > |
|
template<typename Type > |
| range (Type, Type) -> range< Type > |
|
template<pointer_c PointerType, pointer_callable_c< PointerType > FuncType> |
auto | raii_create_object (PointerType object_ptr, FuncType func) |
|
template<typename CharType > |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, no_type const &oh_no) |
|
constexpr auto | difference_absolute (arithmetic_c auto a, arithmetic_c auto b) noexcept |
|
template<std::floating_point T, std::integral S> |
constexpr decltype(auto) | numeric_cast (S s) |
|
template<std::signed_integral T, std::unsigned_integral U> |
constexpr decltype(auto) | numeric_cast (U u) |
|
template<typename EleType , typename S > |
void | truncation_test (S &&s) |
|
template<numerical_c... ArgTypes> |
constexpr decltype(auto) | signed_cast (ArgTypes... args) |
|
template<numerical_c... ArgTypes> |
constexpr decltype(auto) | unsigned_cast (ArgTypes... args) |
|
template<typename T > |
constexpr auto | check_operation_validity (T &&target) |
|
template<class TargetType , class _Ty > |
constexpr std::enable_if_t< std::is_same_v< std::remove_reference_t< TargetType >, std::remove_reference_t< _Ty > >, _Ty && > | smart_forward (std::remove_reference_t< _Ty > &_Arg) noexcept |
|
template<class TargetType , class _Ty > |
constexpr std::enable_if_t< !std::is_same_v< std::remove_reference_t< TargetType >, std::remove_reference_t< _Ty > > &&std::common_with< TargetType, _Ty >, TargetType > | smart_forward (std::remove_reference_t< _Ty > &_Arg) noexcept |
|
template<class TargetType , class _Ty > |
constexpr std::enable_if_t< std::is_same_v< std::remove_reference_t< TargetType >, std::remove_reference_t< _Ty > >, _Ty && > | smart_forward (std::remove_reference_t< _Ty > &&_Arg) noexcept |
|
template<class TargetType , class _Ty > |
constexpr std::enable_if_t< !std::is_same_v< std::remove_reference_t< TargetType >, std::remove_reference_t< _Ty > > &&std::common_with< TargetType, _Ty >, TargetType > | smart_forward (std::remove_reference_t< _Ty > &&_Arg) noexcept |
|
template<class TargetType , class _Ty > |
constexpr std::enable_if_t< std::is_same_v< std::remove_reference_t< TargetType >, std::remove_reference_t< _Ty > >, std::remove_reference_t< _Ty > && > | smart_move (_Ty &&_Arg) noexcept |
|
template<class TargetType , class _Ty > |
constexpr std::enable_if_t< !std::is_same_v< std::remove_reference_t< TargetType >, std::remove_reference_t< _Ty > >, TargetType > | smart_move (_Ty &&_Arg) noexcept |
|
template<auto N, typename T , typename Deleter > |
auto & | cast_ref (std::unique_ptr< T[], Deleter > &uptr) noexcept |
|
template<auto N, typename T , typename Deleter > |
auto & | cast_ref (std::index_sequence< N >, std::unique_ptr< T[], Deleter > &uptr) noexcept |
|
template<auto N, typename T , typename Deleter > |
auto & | cast_ref (std::unique_ptr< T[], Deleter > const &uptr) noexcept |
|
template<auto N, typename T , typename Deleter > |
auto & | cast_ref (std::index_sequence< N >, std::unique_ptr< T[], Deleter > const &uptr) noexcept |
|
template<auto N1, auto N2, typename T , typename Deleter > |
auto & | cast_ref (std::unique_ptr< T[], Deleter > &uptr) noexcept |
|
template<auto N1, auto N2, typename T , typename Deleter > |
auto & | cast_ref (std::index_sequence< N1, N2 >, std::unique_ptr< T[], Deleter > &uptr) noexcept |
|
template<auto N1, auto N2, typename T , typename Deleter > |
auto & | cast_ref (std::unique_ptr< T[], Deleter > const &uptr) noexcept |
|
template<auto N1, auto N2, typename T , typename Deleter > |
auto & | cast_ref (std::index_sequence< N1, N2 >, std::unique_ptr< T[], Deleter > const &uptr) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , typename Deleter > |
auto & | cast_ref (std::unique_ptr< T[], Deleter > &uptr) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , typename Deleter > |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, std::unique_ptr< T[], Deleter > &uptr) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , typename Deleter > |
auto & | cast_ref (std::unique_ptr< T[], Deleter > const &uptr) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , typename Deleter > |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, std::unique_ptr< T[], Deleter > const &uptr) noexcept |
|
template<auto N1, auto N2, typename T , auto N, typename = std::enable_if_t<N1* N2 == N>> |
auto & | cast_ref (T(&array)[N]) noexcept |
|
template<auto N1, auto N2, typename T , auto N, typename = std::enable_if_t<N1* N2 == N>> |
auto & | cast_ref (std::index_sequence< N1, N2 >, T(&array)[N]) noexcept |
|
template<auto N1, auto N2, typename T , auto N = N1 * N2> |
auto & | cast_ref (T(&array)[N1][N2]) noexcept |
|
template<auto N1, auto N2, typename T , auto N = N1 * N2> |
auto & | cast_ref (std::index_sequence< N1, N2 >, T(&array)[N1][N2]) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , auto N, typename = std::enable_if_t<N1* N2* N3 == N>> |
auto & | cast_ref (T(&array)[N]) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , auto N, typename = std::enable_if_t<N1* N2* N3 == N>> |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, T(&array)[N]) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , auto N = N1 * N2* N3> |
auto & | cast_ref (T(&array)[N1][N2][N3]) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , auto N = N1 * N2* N3> |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, T(&array)[N1][N2][N3]) noexcept |
|
template<auto N, typename T , typename = std::enable_if_t<std::is_pointer_v<T>>> |
auto & | cast_ref (T array) noexcept |
|
template<auto N1, auto N2, typename T , typename = std::enable_if_t<std::is_pointer_v<T>>> |
auto & | cast_ref (T array) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , typename = std::enable_if_t<std::is_pointer_v<T>>> |
auto & | cast_ref (T array) noexcept |
|
template<auto N, typename T , typename = std::enable_if_t<std::is_pointer_v<T>>> |
auto & | cast_ref (std::index_sequence< N >, T array) noexcept |
|
template<auto N1, auto N2, typename T , typename = std::enable_if_t<std::is_pointer_v<T>>> |
auto & | cast_ref (std::index_sequence< N1, N2 >, T array) noexcept |
|
template<auto N1, auto N2, auto N3, typename T , typename = std::enable_if_t<std::is_pointer_v<T>>> |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, T array) noexcept |
|
template<std::size_t N1, typename T , std::size_t N, typename = std::enable_if_t<N1 == N>> |
auto & | cast_ref (std::array< T, N > &array) noexcept |
|
template<std::size_t N1, typename T , std::size_t N, typename = std::enable_if_t<N1 == N>> |
auto & | cast_ref (std::array< T, N > const &array) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 == N>> |
auto & | cast_ref (std::array< T, N > &array) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 == N>> |
auto & | cast_ref (std::array< T, N > const &array) noexcept |
|
template<std::size_t N1, typename T , std::size_t N, typename = std::enable_if_t< N1 == N>> |
auto & | cast_ref (std::index_sequence< N1 >, std::array< T, N > &array) noexcept |
|
template<std::size_t N1, typename T , std::size_t N, typename = std::enable_if_t< N1 == N>> |
auto & | cast_ref (std::index_sequence< N1 >, std::array< T, N > const &array) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 == N>> |
auto & | cast_ref (std::index_sequence< N1, N2 >, std::array< T, N > &array) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 == N>> |
auto & | cast_ref (std::index_sequence< N1, N2 >, std::array< T, N > const &array) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 * N3 == N>> |
auto & | cast_ref (std::array< T, N > &array) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 * N3 == N>> |
auto & | cast_ref (std::array< T, N > const &array) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 * N3 == N>> |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, std::array< T, N > &array) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T , std::size_t N, typename = std::enable_if_t< N1 * N2 * N3 == N>> |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, std::array< T, N > const &array) noexcept |
|
template<std::size_t N, typename T > |
auto & | cast_ref (std::vector< T > &vctr) noexcept |
|
template<std::size_t N, typename T > |
auto & | cast_ref (std::vector< T > const &vctr) noexcept |
|
template<std::size_t N, typename T > |
auto & | cast_ref (std::index_sequence< N >, std::vector< T > &vctr) noexcept |
|
template<std::size_t N, typename T > |
auto & | cast_ref (std::index_sequence< N >, std::vector< T > const &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T > |
auto & | cast_ref (std::vector< T > &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T > |
auto & | cast_ref (std::vector< T > const &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T > |
auto & | cast_ref (std::index_sequence< N1, N2 >, std::vector< T > &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, typename T > |
auto & | cast_ref (std::index_sequence< N1, N2 >, std::vector< T > const &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T > |
auto & | cast_ref (std::vector< T > &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T > |
auto & | cast_ref (std::vector< T > const &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T > |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, std::vector< T > &vctr) noexcept |
|
template<std::size_t N1, std::size_t N2, std::size_t N3, typename T > |
auto & | cast_ref (std::index_sequence< N1, N2, N3 >, std::vector< T > const &vctr) noexcept |
|
template<size_t N1, size_t N2, typename T , size_t N, typename = std::enable_if_t<N1* N2 == N>> |
auto | cast_array (T(&array)[N]) noexcept |
|
template<size_t N1, size_t N2, typename T , size_t N = N1 * N2> |
auto | cast_array (T(&array)[N1][N2]) noexcept |
|
template<size_t N1, size_t N2, size_t N3, typename T , size_t N, typename = std::enable_if_t<N1* N2* N3 == N>> |
auto | cast_array (T(&array)[N]) noexcept |
|
template<size_t N1, size_t N2, size_t N3, typename T , size_t N = N1 * N2* N3> |
auto | cast_array (T(&array)[N1][N2][N3]) noexcept |
|
template<typename T , size_t N> |
auto | cast_array (std::array< T, N > &array) noexcept |
|
template<typename T , size_t N> |
auto | cast_array (std::array< T, N > const &array) noexcept |
|
template<size_t N1, size_t N2, typename T , size_t N, typename = std::enable_if_t< N1 * N2 == N>> |
auto | cast_array (std::array< T, N > &array) noexcept |
|
template<size_t N1, size_t N2, typename T , size_t N, typename = std::enable_if_t< N1 * N2 == N>> |
auto | cast_array (std::array< T, N > const &array) noexcept |
|
template<size_t N1, size_t N2, size_t N3, typename T , size_t N, typename = std::enable_if_t< N1 * N2 * N3 == N>> |
auto | cast_array (std::array< T, N > &array) noexcept |
|
template<size_t N1, size_t N2, size_t N3, typename T , size_t N, typename = std::enable_if_t< N1 * N2 * N3 == N>> |
auto | cast_array (std::array< T, N > const &array) noexcept |
|
template<typename FuncType , typename... ArgTypes> |
types::tuple_if_all_apply_t< FuncType, ArgTypes... > | apply_tuple (FuncType &&f, ArgTypes &&... args) |
|
template<typename FuncType , typename... ArgTypes> |
types::vector_if_all_apply_t< FuncType, ArgTypes... > | apply_vector (FuncType &&f, ArgTypes &&... args) |
|
template<typename FuncType , typename... ArgTypes> |
types::array_if_all_apply_t< FuncType, ArgTypes... > | apply_array (FuncType &&f, ArgTypes &&... args) |
|
template<typename L , typename R > |
constexpr auto | operator+ (safe_cast_operation< L > const &a, safe_cast_operation< R > const &b) noexcept |
|
template<typename L , typename R > |
constexpr auto | operator- (safe_cast_operation< L > const &a, safe_cast_operation< R > const &b) noexcept |
|
template<typename L , typename R > |
constexpr auto | operator* (safe_cast_operation< L > const &a, safe_cast_operation< R > const &b) noexcept |
|
template<typename L , typename R > |
constexpr auto | operator/ (safe_cast_operation< L > const &a, safe_cast_operation< R > const &b) noexcept |
|
template<non_safe_co_c L, typename R > |
constexpr auto | operator+ (L &&a, safe_cast_operation< R > const &b) |
|
template<typename L , non_safe_co_c R> |
constexpr auto | operator+ (safe_cast_operation< L > const &a, R &&b) |
|
template<non_safe_co_c L, typename R > |
constexpr auto | operator- (L &&a, safe_cast_operation< R > const &b) |
|
template<typename L , non_safe_co_c R> |
constexpr auto | operator- (safe_cast_operation< L > const &a, R &&b) |
|
template<non_safe_co_c L, typename R > |
constexpr auto | operator* (L &&a, safe_cast_operation< R > const &b) |
|
template<typename L , non_safe_co_c R> |
constexpr auto | operator* (safe_cast_operation< L > const &a, R &&b) |
|
template<non_safe_co_c L, typename R > |
constexpr auto | operator/ (L &&a, safe_cast_operation< R > const &b) |
|
template<typename L , non_safe_co_c R> |
constexpr auto | operator/ (safe_cast_operation< L > const &a, R &&b) |
|
template<typename L , typename R > |
constexpr auto | operator+ (safe_integral_operation< L > const &a, safe_integral_operation< R > const &b) |
|
template<typename L , typename R > |
constexpr auto | operator- (safe_integral_operation< L > const &a, safe_integral_operation< R > const &b) |
|
template<typename L , typename R > |
constexpr auto | operator* (safe_integral_operation< L > const &a, safe_integral_operation< R > const &b) |
|
template<typename L , typename R > |
constexpr auto | operator/ (safe_integral_operation< L > const &a, safe_integral_operation< R > const &b) |
|
template<non_safe_io_c L, typename R > |
constexpr auto | operator+ (L &&a, safe_integral_operation< R > const &b) |
|
template<typename L , non_safe_io_c R> |
constexpr auto | operator+ (safe_integral_operation< L > const &a, R &&b) |
|
template<non_safe_io_c L, typename R > |
constexpr auto | operator- (L &&a, safe_integral_operation< R > const &b) |
|
template<typename L , non_safe_io_c R> |
constexpr auto | operator- (safe_integral_operation< L > const &a, R &&b) |
|
template<non_safe_io_c L, typename R > |
constexpr auto | operator* (L &&a, safe_integral_operation< R > const &b) |
|
template<typename L , non_safe_io_c R> |
constexpr auto | operator* (safe_integral_operation< L > const &a, R &&b) |
|
template<non_safe_io_c L, typename R > |
constexpr auto | operator/ (L &&a, safe_integral_operation< R > const &b) |
|
template<typename L , non_safe_io_c R> |
constexpr auto | operator/ (safe_integral_operation< L > const &a, R &&b) |
|
template<typename L , typename R > |
constexpr auto | operator+ (safe_numerical_operation< L > const &a, safe_numerical_operation< R > const &b) |
|
template<typename L , typename R > |
constexpr auto | operator- (safe_numerical_operation< L > const &a, safe_numerical_operation< R > const &b) |
|
template<typename L , typename R > |
constexpr auto | operator* (safe_numerical_operation< L > const &a, safe_numerical_operation< R > const &b) |
|
template<typename L , typename R > |
constexpr auto | operator/ (safe_numerical_operation< L > const &a, safe_numerical_operation< R > const &b) |
|
template<non_safe_no_c L, typename R > |
constexpr auto | operator+ (L &&a, safe_numerical_operation< R > const &b) |
|
template<typename L , non_safe_no_c R> |
constexpr auto | operator+ (safe_numerical_operation< L > const &a, R &&b) |
|
template<non_safe_no_c L, typename R > |
constexpr auto | operator- (L &&a, safe_numerical_operation< R > const &b) |
|
template<typename L , non_safe_no_c R> |
constexpr auto | operator- (safe_numerical_operation< L > const &a, R &&b) |
|
template<non_safe_no_c L, typename R > |
constexpr auto | operator* (L &&a, safe_numerical_operation< R > const &b) |
|
template<typename L , non_safe_no_c R> |
constexpr auto | operator* (safe_numerical_operation< L > const &a, R &&b) |
|
template<non_safe_no_c L, typename R > |
constexpr auto | operator/ (L &&a, safe_numerical_operation< R > const &b) |
|
template<typename L , non_safe_no_c R> |
constexpr auto | operator/ (safe_numerical_operation< L > const &a, R &&b) |
|
template<long long DebugMode = 2, typename T = int> |
constexpr auto | sbo (T &&value) noexcept(!cpg::bDetectOverFlow) |
|
template<typename T > |
constexpr decltype(auto) | decay_value (T &&value) noexcept |
|
template<template< typename... > class ContainerType, typename... ArgTypes> |
constexpr auto | create_container (ArgTypes &&... args) noexcept |
|
template<all_the_same_flat_c... ArgTypes> |
constexpr auto | make_array (ArgTypes &&... args) noexcept |
|
template<typename... ArgTypes> |
constexpr auto | make_tuple (ArgTypes &&... args) noexcept |
|
template<typename CharType , typename... Types> |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, const type_container< Types... > &tc) |
|
template<typename... Types> |
auto | make_vector_of_variants (Types... args) |
|
template<vector_c... ContainerTypes, auto N = sizeof...(ContainerTypes)>
requires (N > 0) |
constexpr auto | element_counts_are_the_same (ContainerTypes &&... containers) |
|
template<std_array_flat_c... ContainerTypes, auto N = sizeof...(ContainerTypes)>
requires (N > 0) |
constexpr auto | element_counts_are_the_same (ContainerTypes... containers) |
|
template<std::size_t N, vector_c VectorType> |
constexpr decltype(auto) | make_span (VectorType &&v) |
|
template<std_array_flat_c ArrayType> |
constexpr decltype(auto) | make_span (ArrayType &&array) |
|
template<typename T , std::size_t N> |
constexpr decltype(auto) | make_span (T(&array)[N]) |
|
template<typename T , T START, T END, T STEP, T Index> |
std::ostream & | operator<< (std::ostream &os, item_index< T, START, END, STEP, Index > const &item) |
|
template<typename CharType , typename T , T Row, T Column, T Index> |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, row_column_value< T, Row, Column, Index > const &idx) |
|
template<typename CharType , typename T , T Height, T Row, T Column, T Index> |
std::basic_ostream< CharType > & | operator<< (std::basic_ostream< CharType > &os, height_row_column_value< T, Height, Row, Column, Index > const &idx) |
|
template<std::size_t... Ints, typename FuncType > |
auto | for_tuple (FuncType &&f, std::index_sequence< Ints... >) |
|
template<std::size_t... Ints, typename FuncType > |
auto | for_tuple (std::index_sequence< Ints... >, FuncType &&f) |
|
template<std::size_t N, typename FuncType > |
auto | for_tuple (FuncType &&f) |
|
template<std::size_t... Ints, typename FuncType > |
auto | for_array (FuncType &&f, std::index_sequence< Ints... >) |
|
template<std::size_t... Ints, typename FuncType > |
auto | for_array (std::index_sequence< Ints... >, FuncType &&f) |
|
template<std::size_t N, typename FuncType > |
auto | for_array (FuncType &&f) |
|
template<std::size_t... Ints, typename FuncType > |
auto | for_vector (FuncType &&f, std::index_sequence< Ints... >) |
|
template<std::size_t... Ints, typename FuncType > |
auto | for_vector (std::index_sequence< Ints... >, FuncType &&f) |
|
template<std::size_t N, typename FuncType > |
auto | for_vector (FuncType &&f) |
|
template<typename... Ls, typename... Rs> |
constexpr auto | tuple_append (std::tuple< Ls... > const &A, std::tuple< Rs... > const &B) noexcept |
|
template<typename... Ls, typename R , std::size_t N2> |
constexpr auto | tuple_append (std::tuple< Ls... > const &A, std::array< R, N2 > const &B) noexcept |
|
template<typename L , std::size_t N1, typename... Rs> |
constexpr auto | tuple_append (std::array< L, N1 > const &A, std::tuple< Rs... > const &B) noexcept |
|
template<typename L , std::size_t N1, typename R , std::size_t N2> |
constexpr auto | tuple_append (std::array< L, N1 > const &A, std::array< R, N2 > const &B) noexcept |
|
template<typename... Ls, neither_array_nor_tuple_c... ArgTypes> |
constexpr auto | tuple_append (std::tuple< Ls... > const &A, ArgTypes &&... args) noexcept |
|
template<typename L , std::size_t N, neither_array_nor_tuple_c... ArgTypes> |
constexpr auto | tuple_append (std::array< L, N > const &A, ArgTypes &&... args) noexcept |
|
template<neither_array_nor_tuple_c... Types> |
constexpr auto | tuple_append (Types &&... args) noexcept |
|
template<typename ContainerType = std::tuple<>, long long END = std::tuple_size_v<std::remove_cvref_t<ContainerType>>, typename WorkType = std::tuple<>, typename... ArgTypes>
requires (tuple_flat_c<ContainerType> || std_array_flat_c<ContainerType>) requires { hidden::for_workhorse<long long, 0ll, END, 1ll>(std::forward<ContainerType>(container), std::forward<WorkType>(work), make_sequence<long long, 0ll, END, 1ll>{}, std::forward<ArgTypes>(args)... ); } |
void | for_workhorse (ContainerType &&container, WorkType &&work, ArgTypes &&... args) |
|
template<typename ContainerType = std::tuple<>, typename WorkType = std::tuple<>, long long END = std::tuple_size_v<std::remove_cvref_t<ContainerType>>, typename... ArgTypes>
requires (variant_flat_c<ContainerType>|| tuple_flat_c<ContainerType> || std_array_flat_c<ContainerType>|| c_array_flat_c<ContainerType>|| pair_flat_c<ContainerType>) requires { hidden::for_workhorse<long long, 0ll, END, 1ll>(std::forward<WorkType>(work), make_sequence<long long, 0ll, END, 1ll>{}, std::forward<ArgTypes>(args)... ); } |
void | for_workhorse (WorkType &&work, ArgTypes &&... args) |
|
template<int END, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_workhorse<long long, 0ll, END, 1ll>(std::forward<WorkType>(work), make_sequence<long long, 0ll, END, 1ll>{}, std::forward<ArgTypes>(args)... ); } |
void | for_workhorse (WorkType &&work, ArgTypes &&... args) |
|
template<long long START, long long END, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_workhorse<long long, START, END, START < END ? 1ll : -1ll>(std::forward<WorkType>(work), make_sequence<long long, START, END, START < END ? 1ll : -1ll>{}, std::forward<ArgTypes>(args)... ); } |
void | for_workhorse (WorkType &&work, ArgTypes &&... args) |
|
template<long long START, long long END, long long STEP, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_workhorse<long long, START, END, STEP>(std::forward<WorkType>(work), make_sequence<long long, START, END, STEP>{}, std::forward<ArgTypes>(args)... ); } |
void | for_workhorse (WorkType &&work, ArgTypes &&... args) |
|
template<typename ContainerType , typename WorkType = std::tuple<>, long long END = std::tuple_size_v<std::remove_cvref_t<ContainerType>>, typename... ArgTypes>
requires (variant_flat_c<ContainerType>|| tuple_flat_c<ContainerType> || std_array_flat_c<ContainerType>|| c_array_flat_c<ContainerType>|| pair_flat_c<ContainerType>) requires { hidden::for_stallion<long long, 0ll, END, 1ll>(std::forward<WorkType>(work), make_sequence<long long, 0ll, END, 1ll>{}, std::forward<ArgTypes>(args)... ); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, ArgTypes &&... args) |
|
template<typename ContainerType , typename WorkType = std::tuple<>, long long END = std::tuple_size_v<std::remove_cvref_t<ContainerType>>, typename... ArgTypes>
requires (variant_flat_c<ContainerType>|| tuple_flat_c<ContainerType> || std_array_flat_c<ContainerType>|| c_array_flat_c<ContainerType>|| pair_flat_c<ContainerType>) requires { hidden::for_stallion<long long, 0ll, END, 1ll>(std::forward<WorkType>(work), make_sequence<long long, 0ll, END, 1ll>{}, std::forward<ArgTypes>(args)... ); } |
constexpr decltype(auto) | for_stallion (ContainerType &&container, WorkType &&work, ArgTypes &&... args) |
|
template<long long END, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_stallion<long long, 0ll, END, 1ll>(std::forward<WorkType>(work), make_sequence<long long, 0ll, END, 1ll>{}, std::forward<ArgTypes>(args)... ); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, ArgTypes &&... args) |
|
template<long long START, long long END, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_stallion<long long, START, END, START < END ? 1ll: -1ll>(std::forward<WorkType>(work), make_sequence<long long, START, END, START < END ? 1ll: -1ll>{}, std::forward<ArgTypes>(args)... ); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, ArgTypes &&... args) |
|
template<long long START, long long END, long long STEP, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_stallion<long long, START, END, STEP>(std::forward<WorkType>(work), make_sequence<long long, START, END, STEP>{}, std::forward<ArgTypes>(args)... ); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, ArgTypes &&... args) |
|
template<auto head, auto... tails> |
constexpr auto | drop_head (sequence< head, tails... >) |
|
template<auto left, auto... lefts, auto head, auto... tails> |
constexpr auto | compute_multipliers (sequence< left, lefts... > result, sequence< head, tails... >) |
|
template<auto head, auto... tails> |
constexpr auto | get_total (sequence< head, tails... >) |
|
template<auto ii, auto head, auto... tails> |
constexpr auto | get (sequence< head, tails... >) |
|
template<auto... ms, auto... rs> |
constexpr auto | reverse (sequence< ms... > mm, sequence< rs... >) |
|
template<auto kk, auto ii = 0, auto... ms, auto head, auto... indices> |
constexpr auto | get_index (sequence< head, indices... > index, sequence< ms... > mm) |
|
template<typename T , T... args> |
constexpr auto | create_tuple_sequence (std::integer_sequence< T, args... > dimensions) |
|
template<long long... Ns, typename WorkType , typename... ArgTypes>
requires requires { hidden::for_stallion_tuple(std::forward<WorkType>(work), create_tuple_sequence(sequence<Ns...>{}), std::forward<ArgTypes>(args)... ); } |
constexpr decltype(auto) | for_stallion_tuple (WorkType &&work, ArgTypes &&... args) |
|
template<tuple_flat_c TupleType> |
constexpr decltype(auto) | tuple_to_array (TupleType &&tuple) |
|
template<tuple_flat_c TupleType> |
constexpr decltype(auto) | tuple_to_array_recursive (TupleType &&tuple) |
|
template<typename... Types> |
auto | reverse_tuple (std::tuple< Types... > const &tuple) |
|
template<typename Type , std::size_t N> |
auto | reverse_array (std::array< Type, N > const &array) |
|