|
template<typename F , typename... Args, enable_if_t< not std::is_member_pointer< decay_t< F >>::value, int > = 0> |
constexpr auto | do_invoke (F &&f, Args &&... args) noexcept(noexcept(std::forward< F >(f)(std::forward< Args >(args)...))) -> decltype(auto) |
|
template<typename F , typename Object , typename... Args, enable_if_t< not std::is_pointer< decay_t< Object >>::value and std::is_member_function_pointer< F >::value, int > = 0> |
constexpr auto | do_invoke (F f, Object &&obj, Args &&... args) noexcept(noexcept((obj.*f)(std::forward< Args >(args)...))) -> decltype(auto) |
|
template<typename F , typename Pointer , typename... Args, enable_if_t< std::is_pointer< Pointer >::value and std::is_member_function_pointer< F >::value, int > = 0> |
constexpr auto | do_invoke (F f, Pointer ptr, Args &&... args) noexcept(noexcept((ptr-> *f)(std::forward< Args >(args)...))) -> decltype(auto) |
|
template<typename Member , typename Object , enable_if_t< not std::is_pointer< decay_t< Object >>::value and std::is_member_object_pointer< Member >::value, int > = 0> |
constexpr auto | do_invoke (Member mem, Object &&obj) noexcept -> decltype(auto) |
|
template<typename Member , typename Pointer , enable_if_t< std::is_pointer< Pointer >::value and std::is_member_object_pointer< Member >::value, int > = 0> |
constexpr auto | do_invoke (Member mem, Pointer ptr) noexcept -> decltype(auto) |
|
template<typename... Ts> |
constexpr auto | ignore (Ts &&...) noexcept -> void |
|
template<typename T , std::size_t... Is> |
constexpr auto | swap_tuple_impl (T &a, T &b, std::index_sequence< Is... >) noexcept(noexcept(ignore(((void) swap(std::get< Is >(a), std::get< Is >(b)), 0)...))) -> void |
|
constexpr auto | msb (std::uintmax_t x) -> std::uintmax_t |
|
template<typename Num > |
constexpr auto | msb_possible () -> Num |
|
template<typename CharT > |
auto | to_int_type (CharT ch) |
|
template<typename CharT , typename IntT > |
auto | to_char_type (IntT ch) |
|
auto | tolower (char ch) |
|
auto | towlower (wchar_t ch) |
|
auto | toupper (char ch) |
|
auto | towupper (wchar_t ch) |
|
constexpr auto | get_hash_order () -> endian |
|
template<typename T , int N, int... I> |
constexpr auto | trim_array (const T(&arr)[N], std::integer_sequence< int, I... >) -> std::array< T, std::integer_sequence< int, I... >::size()> |
| Truncates an array to its first N elements. More...
|
|
template<typename C , typename = decltype(std::declval<C&>().resize(0))> |
auto | calc_resizable (int) noexcept -> std::true_type |
|
template<typename > |
auto | calc_resizable (...) noexcept -> std::false_type |
|
template<typename Variant , typename F , std::size_t... Is> |
constexpr auto | indexed_visitor_impl (std::index_sequence< Is... >) -> auto |
| Generates an array of function pointers which will unwrap the variant and pass the index to the function. More...
|
|
template<typename V , typename F , std::size_t I, std::size_t... Is> |
constexpr decltype(auto) | visit_impl (V &&v, F &&f, std::index_sequence< I, Is... >) |
|
template<typename V , typename F , std::size_t I, std::size_t... Is> |
constexpr void | visit_nop_impl (V &&v, F &&f, std::index_sequence< I, Is... >) |
|
The namespace used for implementation details within kblib.