33 #ifndef GKO_CORE_SYNTHESIZER_CONTAINERS_ 34 #define GKO_CORE_SYNTHESIZER_CONTAINERS_ 46 template <
typename T, T... Values>
50 template <
typename... Types>
54 template <
int Start,
int End,
int Step = 1>
61 template <
typename List1,
typename List2>
62 struct concatenate_impl;
64 template <
typename T, T... Values1, T... Values2>
65 struct concatenate_impl<value_list<T, Values1...>, value_list<T, Values2...>> {
66 using type = value_list<T, Values1..., Values2...>;
73 template <
typename List1,
typename List2>
74 using concatenate =
typename detail::concatenate_impl<List1, List2>::type;
80 template <
typename T,
typename =
void>
83 template <
typename T, T... Values>
84 struct as_list_impl<value_list<T, Values...>> {
85 using type = value_list<T, Values...>;
88 template <
typename... Types>
89 struct as_list_impl<type_list<Types...>> {
90 using type = type_list<Types...>;
93 template <
int Start,
int End,
int Step>
94 struct as_list_impl<range<Start, End, Step>, xstd::enable_if_t<(Start < End)>> {
95 using type = concatenate<
97 typename as_list_impl<range<Start + Step, End, Step>>::type>;
100 template <
int Start,
int End,
int Step>
101 struct as_list_impl<range<Start, End, Step>,
102 xstd::enable_if_t<(Start >= End)>> {
110 template <
typename T>
111 using as_list =
typename detail::as_list_impl<T>::type;
118 #endif // GKO_CORE_SYNTHESIZER_CONTAINERS_ The Ginkgo namespace.
Definition: abstract_factory.hpp:45
Definition: containers.hpp:51
Definition: containers.hpp:55
Definition: containers.hpp:47