|
template<typename = void> |
std::wstring | ascii_conversion (std::string const &str) |
|
template<typename = void> |
std::string | ascii_conversion (std::wstring const &str) |
|
template<std::size_t N, typename FuncType , typename Type , typename... Types> |
constexpr auto | fn_return_type (FuncType func, type_container< Type, Types... >) |
|
template<std::size_t N, typename FuncType , typename Type , typename... Types> |
constexpr auto | argument_count (FuncType func, type_container< Type, Types... >) |
|
template<typename FuncType , typename... ArgTypes> |
auto | safe_apply (FuncType &&f, std::tuple< ArgTypes... > const &args) -> decltype(f(std::declval< ArgTypes >()...)) |
|
template<typename FuncType , typename ArgType , std::size_t N, std::size_t... Ints> |
auto | array_apply (FuncType &&f, std::array< ArgType, N > const &args, std::index_sequence< Ints... >) -> decltype(f(std::get< Ints >(args)...)) |
|
template<typename FuncType , typename ArgType , std::size_t N> |
auto | safe_apply (FuncType &&f, std::array< ArgType, N > const &args) -> decltype(array_apply(f, args, std::make_index_sequence< N >{})) |
|
template<typename FuncType , typename TupleType > |
auto | fn_apply (FuncType &&f, TupleType &&args) -> decltype(safe_apply(f, args)) |
|
template<typename P , typename... Types> |
consteval bool | fn_all_different () |
|
template<typename CharType , typename Type , typename... Types> |
std::basic_ostream< CharType > & | print_type_container (std::basic_ostream< CharType > &os, const type_container< Type, Types... > &tc) |
|
template<typename... LeftTypes> |
constexpr auto | fn_pop_back (type_container< LeftTypes... > left, type_container< > right) |
|
template<typename... LeftTypes, typename Head > |
constexpr auto | fn_pop_back (type_container< LeftTypes... > left, type_container< Head > right) |
|
template<typename... LeftTypes, typename First , typename Second , typename... Tails> |
constexpr auto | fn_pop_back (type_container< LeftTypes... > left, type_container< First, Second, Tails... > right) |
|
template<typename... Types> |
consteval auto | fn_type_container_to_variant (types::type_container< Types... >) |
|
template<typename... Types> |
consteval auto | fn_make_unique_variant (std::variant< Types... >) |
|
template<typename T , T START, T END, T STEP, T... Indices> |
constexpr auto | fn_make_sequence (std::integer_sequence< T, Indices... > seq) |
|
template<typename T , T START, T END, T STEP> |
consteval T | compute_last_index () |
|
template<typename T , T START, T END, T STEP, typename WorkType , T... Indices, typename... ArgTypes>
requires requires { work(item_index<T, START, END, STEP, START>{}, std::forward<ArgTypes>(args)...); } |
void | for_workhorse (WorkType &&work, std::integer_sequence< T, Indices... >, ArgTypes &&... args) |
|
template<typename T , T START, T END, T STEP, typename ContainerType , typename WorkType , T... Indices, typename... ArgTypes>
requires requires { work( item_index<T, START, END, STEP, START>{}, std::get<START>(std::forward<ContainerType>(container)), std::forward<ArgTypes>(args)...); } |
void | for_workhorse (ContainerType &&container, WorkType &&work, std::integer_sequence< T, Indices... >, ArgTypes &&... args) |
|
template<typename T , T START, T END, T STEP, typename ContainerType , typename WorkType , T... Indices, typename... ArgTypes>
requires requires { work( std::get<0>(std::forward<ContainerType>(container)), std::forward<ArgTypes>(args)...); } |
void | for_workhorse (ContainerType &&container, WorkType &&work, std::integer_sequence< T, Indices... >, ArgTypes &&... args) |
|
template<typename T , T START, T END, T STEP, typename WorkType , T... Indices, typename... ArgTypes>
requires requires { work(item_index<T, START, END, STEP, START>{}, sequence<Indices...>{}, std::forward<ArgTypes>(args)...); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, std::integer_sequence< T, Indices... >, ArgTypes &&... args) |
|
template<typename T , T START, T END, T STEP, typename WorkType , T... Indices, typename... ArgTypes>
requires requires { work(sequence<Indices...>{}, item_index<T, START, END, STEP, START>{}, std::forward<ArgTypes>(args)...); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, std::integer_sequence< T, Indices... >, ArgTypes &&... args) |
|
template<typename T , T START, T END, T STEP, typename WorkType , T... Indices, typename... ArgTypes>
requires requires { work(sequence<Indices...>{}, std::forward<ArgTypes>(args)...); } |
constexpr decltype(auto) | for_stallion (WorkType &&work, std::integer_sequence< T, Indices... >, ArgTypes &&... args) |
|
template<typename T , T Rows, T Columns> |
constexpr auto | generate_row_column_value () |
|
template<typename T , T Heights, T Rows, T Columns> |
constexpr auto | generate_height_row_column_value () |
|
template<typename... Ls, typename... Rs, auto... Li, auto... Ri> |
constexpr auto | tuple_append (std::tuple< Ls... > const &A, sequence< Li... >, std::tuple< Rs... > const &B, sequence< Ri... >) noexcept |
|
template<typename... Ls, typename R , auto... Li, std::size_t N, auto... Ri> |
constexpr auto | tuple_append (std::tuple< Ls... > const &A, sequence< Li... >, std::array< R, N > const &B, sequence< Ri... >) noexcept |
|
template<typename L , std::size_t N, typename... Rs, auto... Li, auto... Ri> |
constexpr auto | tuple_append (std::array< L, N > const &A, sequence< Li... >, std::tuple< Rs... > const &B, sequence< Ri... >) noexcept |
|
template<typename L , std::size_t N1, typename R , std::size_t N2, auto... Li, auto... Ri> |
constexpr auto | tuple_append (std::array< L, N1 > const &A, sequence< Li... >, std::array< R, N2 > const &B, sequence< Ri... >) noexcept |
|
template<typename WorkType , typename ... Indices, typename... ArgTypes>
requires requires { work(indices, std::forward<ArgTypes>(args)...); } |
constexpr decltype(auto) | for_stallion_tuple (WorkType &&work, std::tuple< Indices... > indices, ArgTypes &&... args) |
|