13 #include <type_traits>
15 #include <sycl/detail/boost/mp11/algorithm.hpp>
16 #include <sycl/detail/boost/mp11/set.hpp>
19 inline namespace _V1 {
22 template <
class... T>
using type_list = boost::mp11::mp_list<T...>;
30 template <
typename T,
typename TypeList>
32 boost::mp11::mp_set_contains<TypeList, std::remove_cv_t<T>>;
33 template <
typename T,
typename TypeList>
37 template <
class... L>
using tl_append = boost::mp11::mp_append<L...>;
42 template <
typename T, T Head, T... Tail>
struct value_list<T, Head, Tail...> {
43 static constexpr T head = Head;
49 template <
typename T>
using tail_t =
typename T::tail;
52 template <
typename T, T Value,
typename ValueList>
54 : std::conditional_t<Value == ValueList::head, std::true_type,
55 is_contained_value<T, Value, tail_t<ValueList>>> {};
57 template <
typename T, T Value>
64 template <access::address_space AddressSpace,
typename ValueList>
69 template <
typename T1,
typename T2>
72 template <
typename T1,
typename T2>
74 : std::bool_constant<(sizeof(T1) == (sizeof(T2) * 2))> {};
77 template <
typename TypeList,
template <
typename,
typename>
class Comp,
80 template <
class T2>
using C = Comp<T2, T>;
81 using l = boost::mp11::mp_copy_if<TypeList, C>;
82 using type = boost::mp11::mp_eval_if<is_empty_type_list<l>, void,
83 boost::mp11::mp_front,
l>;
86 template <
typename TypeList,
template <
typename,
typename>
class Comp,
90 template <
typename TypeList,
typename T>
93 template <
typename TypeList,
typename T>
typename find_type< TypeList, Comp, T >::type find_type_t
boost::mp11::mp_append< L... > tl_append
boost::mp11::mp_set_contains< TypeList, std::remove_cv_t< T > > is_contained
boost::mp11::mp_list< T... > type_list
std::is_same< T, empty_type_list > is_empty_type_list
type_list<> empty_type_list
constexpr bool is_contained_v
find_type_t< TypeList, is_type_size_equal, T > find_same_size_type_t
find_type_t< TypeList, is_type_size_double_of, T > find_twice_as_large_type_t
boost::mp11::mp_eval_if< is_empty_type_list< l >, void, boost::mp11::mp_front, l > type
boost::mp11::mp_copy_if< TypeList, C > l