18namespace hi::inline v1 {
129template<>
struct make_string<char8_t> {
using type = std::u8string; };
151template<
typename T,
typename U>
153 using type =
decltype(
static_cast<T
>(0) +
static_cast<U
>(0));
156template<
typename T,
typename U>
157using make_promote_t =
typename make_promote<T,U>::type;
159template<
typename T,
typename Ei=
void>
161 using type = uintmax_t;
164template<std::
unsigned_
integral T>
166 using type = uintmax_t;
169template<std::
signed_
integral T>
171 using type = intmax_t;
175using make_intmax_t =
typename make_intmax<T>::type;
207#if (HI_COMPILER == HI_CC_CLANG || HI_COMPILER == HI_CC_GCC) && (HI_PROCESSOR == HI_CPU_X64)
211template<>
struct make_uintxx<128> {
using type =
unsigned __int128; };
244template<
typename To,
typename From,
typename Ei=
void>
247template<
typename To,
typename From>
requires(not std::is_const_v<From> and not std::is_volatile_v<From>)
249 using type = std::remove_cv_t<To>;
252template<
typename To,
typename From>
requires(not std::is_const_v<From> and std::is_volatile_v<From>)
254 using type = std::remove_cv_t<To>
volatile;
257template<
typename To,
typename From>
requires(std::is_const_v<From> and not std::is_volatile_v<From>)
258struct copy_cv<To,From> {
259 using type = std::remove_cv_t<To>
const;
262template<
typename To,
typename From>
requires(std::is_const_v<From> and std::is_volatile_v<From>)
263struct copy_cv<To,From> {
264 using type = std::remove_cv_t<To>
const volatile;
269template<
typename To,
typename From>
274 template <
typename C>
static std::true_type test(
typename C::value_type *);
277 static const bool value = std::is_same_v<decltype(test<T>(
nullptr)),
std::true_type>;
285 template <
typename C>
static std::true_type test(
decltype(&C::add_callback) func_ptr);
288 static const bool value = std::is_same_v<decltype(test<T>(
nullptr)),
std::true_type>;
294template<
typename BaseType,
typename DerivedType>
297template<
typename BaseType,
typename DerivedType>
300template<
typename DerivedType,
typename BaseType>
303template<
typename DerivedType,
typename BaseType>
306template<
typename DerivedType,
typename BaseType>
309template<
typename DerivedType,
typename BaseType>
315template<
typename T1,
typename T2>
316constexpr bool is_different_v = not std::is_same_v<std::remove_cvref_t<T1>,std::remove_cvref_t<T2>>;
327template<
typename First,
typename Second>
332template<
typename First,
typename Second>
355#define hi_call_method(object, method, ...) \
357 if constexpr (acts_as_pointer_v<decltype(object)>) { \
358 return object->method(__VA_ARGS__); \
360 return object.method(__VA_ARGS__); \
368template<
typename Out,
typename In>
381template<
typename T,
typename Forward>
397template<
typename T,
typename Forward>
406 using type = std::decay_t<T>;
411 using type = std::monostate;
constexpr bool is_numeric_v
Definition type_traits.hpp:110
constexpr bool is_different_v
If the types are different.
Definition type_traits.hpp:316
typename make_string< T >::type make_string_t
type-trait to convert a character to a string type.
Definition type_traits.hpp:135
typename make_string_view< T >::type make_string_view_t
type-trait to convert a character to a string_view type.
Definition type_traits.hpp:149
constexpr bool is_numeric_unsigned_integral_v
Definition type_traits.hpp:58
variant_decay< T >::type variant_decay_t
Definition type_traits.hpp:417
typename copy_cv< To, From >::type copy_cv_t
Type-trait to copy const volatile qualifiers from one type to another.
Definition type_traits.hpp:270
constexpr bool is_numeric_integral_v
Definition type_traits.hpp:82
constexpr bool type_in_range_v
All values of numeric type In can be represented without loss of precision by numeric type Out.
Definition type_traits.hpp:369
constexpr bool is_character_v
Definition type_traits.hpp:122
constexpr bool is_numeric_signed_integral_v
Definition type_traits.hpp:39
Functions and macros for handling architectural difference between compilers, CPUs and operating syst...
Is a numeric signed integer.
Definition type_traits.hpp:29
Is a numeric unsigned integer.
Definition type_traits.hpp:48
Is a numeric integer.
Definition type_traits.hpp:68
Is a numeric.
Definition type_traits.hpp:93
Definition type_traits.hpp:112
type-trait to convert a character to a string type.
Definition type_traits.hpp:126
type-trait to convert a character to a string_view type.
Definition type_traits.hpp:139
Definition type_traits.hpp:152
Definition type_traits.hpp:160
Has an signed integer of a specific size.
Definition type_traits.hpp:180
Has an unsigned integer of a specific size.
Definition type_traits.hpp:185
Has an float of a specific size.
Definition type_traits.hpp:190
Make an signed integer.
Definition type_traits.hpp:195
Make an unsigned integer.
Definition type_traits.hpp:200
Make an floating point.
Definition type_traits.hpp:205
Type-trait to copy const volitile qualifiers from one type to another.
Definition type_traits.hpp:245
Definition type_traits.hpp:273
Definition type_traits.hpp:284
Definition type_traits.hpp:295
Definition type_traits.hpp:301
Definition type_traits.hpp:307
Definition type_traits.hpp:319
Definition type_traits.hpp:328
Definition type_traits.hpp:336
True if T is a forwarded type of OfType.
Definition type_traits.hpp:382
Decays types for use as elements in std::variant.
Definition type_traits.hpp:405