Reference Metaprogramming Functions Functions A function advance(T *, ptrdiff_t) function advance(void *, ptrdiff_t) function align_down(T *, size_t) function align_down(T, std::type_identity_t<T>) function align_up(T *, size_t) function align_up(T, std::type_identity_t<T>) function aligned_allocate(size_t) Allocates aligned memory function aligned_allocate(size_t, size_t) Allocates aligned memory function aligned_deallocate(T *) Deallocates aligned memory function array_to_string(const std::array<size_t, Dims> &, Getter &&, int, int, std::string_view, std::string_view, std::string_view) Render a multi-dimensional array as a nested, brace-delimited string. function array_to_string(size_t, Getter &&, int, int, std::string_view, std::string_view, std::string_view) Convenience overload of array_to_string for a one-dimensional array accessed through a getter callable. function array_to_string(size_t, T *, int, int, std::string_view, std::string_view, std::string_view) Convenience overload of array_to_string for a raw pointer buffer. function as_string(const Args &...) Convert arbitrary values to a std::string using KFR's built-in formatting. function autocast(const Tfrom &) B C function call_with_temp(size_t, Fn &&) Calls a function with a temporary buffer, allocated on the stack if small enough, otherwise on the heap. function cconcat(T1, Ts...) Returns a value of the concatenated list type function cfilter(cvals_t<T, vals...>, cvals_t<bool, flags...>) function cfind(cvals_t<T, values...>, std::type_identity_t<T>) function cfor(cval_t<T, start>, cval_t<T, stop>, BodyFn &&) function cforeach(A0 &&, A1 &&, A2 &&, A3 &&, Fn &&) Invokes function cforeach(A0 &&, A1 &&, A2 &&, Fn &&) Invokes function cforeach(A0 &&, A1 &&, Fn &&) function cforeach(const std::tuple<Ts...> &, Fn &&) function cforeach(ctypes_t<Ts...>, Fn &&) function cforeach(cvals_t<T, values...>, Fn &&) function cforeach(T &&, Fn &&) function choose_const() Selects the constant of the specific type from a list of candidates. Returns the candidate whose type matches T ; triggers a static_assert if T is not present. function choose_const_fallback(C1) Single-argument fallback: converts function choose_const_fallback(C1, Cs...) function choose_const(C1, Cs...) Recursively skips candidates whose type does not match function cif(cbool_t<false>, TrueFn &&, FalseFn &&) Compile-time conditional: invokes function cif(cbool_t<true>, TrueFn &&, FalseFn &&) function cmatch(T &&, Fn &&, Args...) function cmaxof(cvals_t<T>) Returns the maximum value in the list (min of function cmaxof(cvals_t<T, val, vals...>) Returns the maximum value in the list function cminof(cvals_t<T>) Returns the minimum value in the list (max of function cminof(cvals_t<T, val, vals...>) Returns the minimum value in the list function concat_cstring() function concat_cstring(const cstring<N1> &) function concat_cstring(const cstring<N1> &, const cstring<N2> &, const Args &...) function cprod(cvals_t<T>) Returns the product of all values in the list (1 for an empty list) function cprod(cvals_t<T, first, rest...>) Returns the product of all values in the list function csum(cvals_t<T>) Returns the sum of all values in the list (0 for an empty list) function csum(cvals_t<T, first, rest...>) Returns the sum of all values in the list function cswitch(cvals_t<T>, std::type_identity_t<T>, Fn &&, DefFn &&, CmpFn &&) Switch over an empty list: always invokes the default handler function cswitch(cvals_t<T, v0, values...>, std::type_identity_t<T>, Fn &&, DefFn &&, CmpFn &&) function cswitch(cvals_t<T, vs...>, const U &, Function &&, Fallback &&) function ctype_name() function ctypeid() Gets unique value associated with the type function ctypeid(T) Gets unique value associated with the type D E F G I function ilog2(T) Returns the base-2 logarithm of function implicit_cast(U &&) function is_between(T, std::type_identity_t<T>, std::type_identity_t<T>) function is_constant_val(cval_t<T, value>) Returns function is_constant_val(T) Returns function is_divisible(T, T) function is_equal(const T1 &, const T2 &) Returns function is_even(T) Returns function is_greater(const T1 &, const T2 &) Returns function is_greaterorequal(const T1 &, const T2 &) Returns function is_less(const T1 &, const T2 &) Returns function is_lessorequal(const T1 &, const T2 &) Returns function is_notequal(const T1 &, const T2 &) Returns function is_odd(T) Returns function is_poweroftwo(T) Returns function is_sequence(csizes_t<number, numbers...>) J M N O function operator function operator User-defined literal returning a format_t for the given string literal. function operator User-defined literal returning a print_t for the given string literal. function operator==(const data_allocator<T1> &, const data_allocator<T2> &) function operator!=(const data_allocator<T1> &, const data_allocator<T2> &) function operator-(cval_t<T1, val1>) function operator+(cval_t<T1, val1>) function operator~(cval_t<T1, val1>) function operator!(cval_t<T1, val1>) function operator&&(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator||(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator==(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator!=(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator<(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator>(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator<=(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator>=(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator+(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator-(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator*(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator/(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator%(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator<<(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator>>(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator&(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator|(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator^(cval_t<T1, val1>, cvals_t<T2, vals2...>) function operator-(cvals_t<T1, vals1...>) function operator+(cvals_t<T1, vals1...>) function operator~(cvals_t<T1, vals1...>) function operator!(cvals_t<T1, vals1...>) function operator&&(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator||(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator==(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator!=(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator<(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator>(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator<=(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator>=(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator+(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator-(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator*(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator/(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator%(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator<<(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator>>(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator&(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator|(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator^(cvals_t<T1, vals1...>, cval_t<T2, val2>) function operator&&(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator||(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator==(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator!=(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator<(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator>(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator<=(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator>=(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator+(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator-(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator*(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator/(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator%(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator<<(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator>>(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator&(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator|(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator^(cvals_t<T1, vals1...>, cvals_t<T2, vals2...>) function operator|(datatype, datatype) function operator&(datatype, datatype) P function pack_elements() Returns the identity value (0) for an empty pack function pack_elements(Arg, Args...) function padcenter(size_t, const std::string &, char) Center text within a field of size characters using character. function padleft(size_t, const std::string &, char) Left-align text within a field of size characters by appending character. function padright(size_t, const std::string &, char) Right-align text within a field of size characters by prepending character. function pass_through(T &&) Function that returns its first argument function prev_poweroftwo(T) Returns a nearest power of two that is less or equal than n function print(const Args &...) Print values to stdout, each formatted with its default conversion specifier. function printfmt(const std::string &, const Args &...) Print to stdout using a {}"-based format string. function println(const Args &...) Print values to stdout followed by a newline. function ptr_cast(const U *) Reinterprets a const pointer of type function ptr_cast(U *) function ptr_cast(U *, ptrdiff_t) Q function q(T) Wrap the string representation of x in double quotes. R S function scale() function scale(csizes_t<indices...>) function select(cvals_t<bool, flags...>, cvals_t<T, values1...>, cvals_t<T, values2...>) Element-wise selection between two value lists based on a flag list. For each position, returns values1[i] if flags[i] is true , otherwise values2[i] . function snprintfmt(char *, size_t, const std::string &, const Args &...) Write to a buffer using a {}"-based format string. function stop_constexpr() Non-constexpr function used to halt constant evaluation in function str_find(const cstring<N1> &, const cstring<Nneedle> &) function str_replace(const cstring<N1> &, const cstring<Nfrom> &, const cstring<Nto> &) T function type_name() Gets the fully qualified name of the type, including namespace and template parameters (if any) function type_name(T) Gets the fully qualified name of the type, including namespace and template parameters (if any) function typeindex() Returns the zero-based index of type V W Back to top