1#include "gtest/gtest.h"
34 static_assert(std::same_as<Kokkos::utils::impl::make_type_list_t<int >, Kokkos::Impl::type_list<int >>);
35 static_assert(std::same_as<Kokkos::utils::impl::make_type_list_t<int, double>, Kokkos::Impl::type_list<int, double>>);
37 static_assert(std::same_as<Kokkos::utils::impl::make_type_list_t<type_list_t>,
type_list_t>);
45 using type_list_empty_t = Kokkos::Impl::type_list<>;
46 static_assert(type_list_size_v<type_list_empty_t> == 0);
48 static_assert(type_list_size_v<type_list_t> == 3);
56 static_assert( type_list_contains_v<char, type_list_t>);
57 static_assert( ! type_list_contains_v<double, type_list_t>);
59 static_assert( type_list_contains_v<char, int, double, char>);
60 static_assert( ! type_list_contains_v<char, int, double, const char>);
68 static_assert(std::same_as<type_list_at_t<0, type_list_t>,
char>);
69 static_assert(std::same_as<type_list_at_t<1, type_list_t>,
short>);
70 static_assert(std::same_as<type_list_at_t<2, type_list_t>,
int>);
77 using type = std::vector<T>;
85 using transformed_type_list_t = transform_type_list_t<VectorOfTransformer, type_list_t>;
87 using expt_transformed_type_list_t = Kokkos::Impl::type_list<std::vector<char>, std::vector<short>, std::vector<int>>;
89 static_assert(std::same_as<transformed_type_list_t, expt_transformed_type_list_t>);
97 using expt_tuple_t = std::tuple<char, short, int>;
99 static_assert(std::same_as<type_list_to_tuple_t<type_list_t>, expt_tuple_t>);
107 static_assert(type_list_index_v<char, type_list_t> == 0);
108 static_assert(type_list_index_v<short, type_list_t> == 1);
109 static_assert(type_list_index_v<int, type_list_t> == 2);
140 size_t sum_of_sizes = 0;
142 for_each<type_list_t>([&] <
typename T>()
constexpr {
143 sum_of_sizes +=
sizeof(T);
146 return sum_of_sizes ==
sizeof(char) +
sizeof(
short) +
sizeof(int);
constexpr bool type_list_all_v
constexpr size_t type_list_size_v
constexpr bool type_list_contains_v
constexpr bool type_list_any_v
constexpr void for_each(Callable callable)
Calls the instantiation of the call operator of a callable object for each type in a Kokkos::Impl::ty...
typename TransformTypeList< TransformerType, T >::type transform_type_list_t
typename TypeListToTuple< T >::type type_list_to_tuple_t
constexpr bool is_type_list_v
constexpr size_t type_list_index_v
typename TypeListAt< I, T >::type type_list_at_t
TEST(impl, is_type_list_v)
Kokkos::Impl::type_list< char, short, int > type_list_t