type_traits.hpp
Extensions on the standard library type traits to handle Empirical classes (such as Ptr).
Typedefs
-
template<typename T>
using IsIterable = decltype(detail::is_iterable_impl<T>(0)) Determine if a type is iterable.
-
template<typename T>
using remove_std_function_t = typename remove_std_function_type<T>::type
-
template<typename T>
using element_t = typename element_type<T>::type
-
template<typename T>
using is_pointer = is_ptr_type<T>
-
template<typename T>
using remove_ptr_type_t = typename remove_ptr_type<T>::type
-
template<typename T>
using remove_pointer_t = remove_ptr_type_t<T>
-
template<size_t BIT_COUNT, typename DEFAULT = void>
using uint_bit_count_t = typename uint_bit_count<BIT_COUNT, DEFAULT>::type
-
template<size_t BIT_COUNT, typename DEFAULT = void>
using int_bit_count_t = typename int_bit_count<BIT_COUNT, DEFAULT>::type
-
template<typename T, typename MATCH_T>
using match_const_t = typename match_const<T, MATCH_T>::type
-
template<typename ...Variadics>
using variadic_concat_t = typename variadic_concat<Variadics...>::type
-
template<typename Variadic, template<typename> class Filter>
using variadic_filter_t = typename variadic_filter<Variadic, Filter>::type
-
template<typename Variadic, template<typename, typename> class ...Cmp>
using variadic_remove_duplicates_t = typename variadic_remove_duplicates<Variadic, Cmp...>::type
Functions
-
template<typename T>
constexpr bool is_ptr_type_v()
Variables
-
template<typename T, typename = void>
struct HasToString : public std::false_type - #include <type_traits.hpp>
-
template<typename T>
struct HasToString<decoy_t<T, decltype(std::declval<T>().ToString())>> : public std::true_type - #include <type_traits.hpp>
-
template<typename T, typename = void>
struct HasToDouble : public std::false_type - #include <type_traits.hpp>
-
template<typename T>
struct HasToDouble<decoy_t<T, decltype(std::declval<T>().ToDouble())>> : public std::true_type - #include <type_traits.hpp>
-
template<typename>
struct is_std_function : public std::false_type - #include <type_traits.hpp>
Determine if a type passed in is an std::function type (vs a lambda or a raw function)
-
template<typename ...Ts>
struct is_std_function<std::function<Ts...>> : public std::true_type - #include <type_traits.hpp>
-
template<typename T>
struct remove_std_function_type - #include <type_traits.hpp>
Convert std::function to base function type.
-
template<typename T>
struct element_type - #include <type_traits.hpp>
-
template<template<typename...> class TMPL, typename T>
struct element_type<TMPL<T>> - #include <type_traits.hpp>
-
template<typename>
struct is_emp_vector : public std::false_type - #include <type_traits.hpp>
Determine if we have an vector.
-
template<typename T, typename ...Ts>
struct is_emp_vector<vector<T, Ts...>> : public std::true_type - #include <type_traits.hpp>
-
template<typename>
struct is_span : public std::false_type - #include <type_traits.hpp>
Determine if we have a span.
-
template<typename T>
struct is_span<std::span<T>> : public std::true_type - #include <type_traits.hpp>
-
template<typename T>
struct remove_ptr_type - #include <type_traits.hpp>
-
template<size_t BIT_COUNT, typename DEFAULT = void>
struct uint_bit_count - #include <type_traits.hpp>
Figure out which type is an unsigned integer with a specified number of bits.
-
template<size_t BIT_COUNT, typename DEFAULT = void>
struct int_bit_count - #include <type_traits.hpp>
Figure out which type is an integer with a specified number of bits.
-
template<typename T, typename MATCH_T>
struct match_const - #include <type_traits.hpp>
Match the constness of another type.
-
template<typename T, typename MATCH_T>
struct match_const<T, const MATCH_T> - #include <type_traits.hpp>
-
template<typename T1, typename T2>
struct ptr_pair - #include <type_traits.hpp>
-
template<typename Fn, typename ...Args>
struct is_invocable : public decltypedetail::is_invocable_helper::value - #include <type_traits.hpp>
-
template<typename Needle, template<typename...> class Variadic, typename ...U, template<typename, typename> class Cmp>
struct variadic_contains<Needle, Variadic<U...>, Cmp> : public __impl_variadics_type_traits::variadic_contains<Needle, __impl_variadics_type_traits::pack<U...>, Cmp> - #include <type_traits.hpp>
-
template<template<typename...> class Variadic, class ...A, class ...Rest>
struct variadic_concat<Variadic<A...>, Rest...> - #include <type_traits.hpp>
-
template<template<typename...> class Variadic, typename ...U, template<typename> class Filter>
struct variadic_filter<Variadic<U...>, Filter> - #include <type_traits.hpp>
-
template<template<typename...> class Variadic, typename ...U, template<typename, typename> class Cmp>
struct variadic_remove_duplicates<Variadic<U...>, Cmp> - #include <type_traits.hpp>
-
template<template<typename...> class Variadic, template<typename, typename> class Cmp, typename ...U>
struct variadic_union<Cmp, Variadic<U...>> - #include <type_traits.hpp>
Public Types
-
using type = __impl_variadics_type_traits::FromPackType<Variadic, variadic_remove_duplicates_t<__impl_variadics_type_traits::pack<U...>, Cmp>>
-
using type = __impl_variadics_type_traits::FromPackType<Variadic, variadic_remove_duplicates_t<__impl_variadics_type_traits::pack<U...>, Cmp>>
-
template<template<typename...> class Variadic, template<typename, typename> class Cmp, typename ...U0, typename U1, typename ...U>
struct variadic_union<Cmp, Variadic<U0...>, U1, U...> - #include <type_traits.hpp>
Public Types
-
template<template<typename...> class Variadic, template<typename, typename> class Cmp, typename ...U>
struct variadic_intersection<Cmp, Variadic<U...>> - #include <type_traits.hpp>
Public Types
-
using type = __impl_variadics_type_traits::FromPackType<Variadic, variadic_remove_duplicates_t<__impl_variadics_type_traits::pack<U...>, Cmp>>
-
using type = __impl_variadics_type_traits::FromPackType<Variadic, variadic_remove_duplicates_t<__impl_variadics_type_traits::pack<U...>, Cmp>>
-
template<template<typename...> class Variadic, template<typename, typename> class Cmp, typename ...U0, typename U1, typename ...U>
struct variadic_intersection<Cmp, Variadic<U0...>, U1, U...> - #include <type_traits.hpp>
Public Types
-
template<typename Needle, template<typename...> class Haystack, typename ...U, template<typename, typename> class Cmp>
struct variadic_index_of<Needle, Haystack<U...>, Cmp> : public __impl_variadics_type_traits::variadic_index_of<0, Needle, __impl_variadics_type_traits::pack<U...>, Cmp> - #include <type_traits.hpp>