11 template<
typename OwnerT,
typename ValueT>
17 template<
typename OwnerT,
typename ValueT>
23 template<
typename OwnerT,
typename ValueT>
30 template<
typename... Tuples>
33 template<
typename... Tuples>
37 template<
typename... Types>
40 using type = std::tuple<Types...>;
43 template<
typename... FirstTypes,
typename... SecondTypes,
typename... Tail>
44 struct tuples_merged<std::tuple<FirstTypes...>, std::tuple<SecondTypes...>, Tail...>
50 template <
typename T,
typename...
Ts>
53 template <
typename...
Ts,
typename U,
typename... Us>
55 : std::conditional_t<(std::is_same_v<U, Ts> || ...)
56 , ice::unique_tuple<std::tuple<Ts...>, Us...>
57 , ice::unique_tuple<std::tuple<Ts..., U>, Us...>> {};
59 template <
typename...
Ts>
65 template <
typename...
Ts>
79 template<
typename Fn,
typename T,
typename O>
81 { std::forward<Fn>(std::declval<Fn>())(std::forward<T>(a), std::forward<O>(b)) } -> std::convertible_to<bool>;
85 template<
typename Left,
typename Right = Left>
86 constexpr auto equal(Left&& left, Right&& right)
noexcept ->
bool
88 return std::forward<Left>(left) == std::forward<Left>(right);
91 template<
typename Left,
typename Right = Left>
92 constexpr auto less(Left
const& left, Right
const& right)
noexcept ->
bool
99 template <
typename Field,
typename Class>
103 &(((Class*)0)->*member)
112 or (std::is_arithmetic_v<T> && not std::is_floating_point_v<T>);
Definition utility.hxx:80
Definition utility.hxx:111
Definition container_concepts.hxx:12
SPDX-License-Identifier: MIT.
Definition array.hxx:12
typename ice::unique_tuple< std::tuple<>, Ts... >::type unique_tuple_t
Definition utility.hxx:60
constexpr auto equal(Left &&left, Right &&right) noexcept -> bool
Definition utility.hxx:86
std::uintptr_t uptr
Definition types.hxx:29
constexpr auto less(Left const &left, Right const &right) noexcept -> bool
Definition utility.hxx:92
typename ice::const_correct< OwnerT, ValueT >::type const_correct_t
Definition utility.hxx:24
typename make_unique_tuple_helper< T >::type make_unique_tuple
Definition utility.hxx:72
typename ice::tuples_merged< Tuples... >::type tuples_merged_t
Definition utility.hxx:34
constexpr auto offset_of(Field Class::*member) noexcept -> ice::uptr
Definition utility.hxx:100
Represents time interval of seconds.
Definition clock_types.hxx:21
ValueT const type
Definition utility.hxx:20
Definition utility.hxx:13
ValueT type
Definition utility.hxx:14
typename ice::unique_tuple< std::tuple<>, Ts... >::type type
Definition utility.hxx:68
Definition utility.hxx:63
tuples_merged_t< std::tuple< FirstTypes..., SecondTypes... >, Tail... > type
Definition utility.hxx:46
std::tuple< Types... > type
Definition utility.hxx:40
Definition utility.hxx:31
Definition utility.hxx:51