Go to the documentation of this file.
9 #ifndef EAGINE_MP_LIST_HPP
10 #define EAGINE_MP_LIST_HPP
12 #include <type_traits>
19 template <
typename... C>
28 template <
typename TL>
34 template <
typename TL>
40 template <
typename... T>
41 struct mp_is_empty<mp_list<T...>> : std::false_type {};
46 template <
typename TL,
typename T>
53 template <
typename TL,
typename T>
60 template <
typename TL,
typename T>
66 template <
typename H,
typename... C,
typename T>
67 struct mp_contains<mp_list<H, C...>, T> : mp_contains<mp_list<C...>, T> {};
69 template <
typename... C,
typename T>
70 struct mp_contains<mp_list<T, C...>, T> : std::true_type {};
75 template <
typename TL1,
typename TL2,
typename TL3>
78 template <
typename... T3>
81 template <
typename... T1,
typename... T3>
85 template <
typename... T2,
typename... T3>
86 struct mp_union_add<mp_list<>, mp_list<T2...>, mp_list<T3...>>
89 template <
typename H,
typename... T1,
typename... T2,
typename... T3>
90 struct mp_union_add<mp_list<H, T1...>, mp_list<T2...>, mp_list<T3...>>
92 mp_contains<mp_list<T2...>, H>::value,
93 mp_union_add<mp_list<T1...>, mp_list<T2...>, mp_list<T3..., H>>,
94 mp_union_add<mp_list<T1...>, mp_list<T2...>, mp_list<T3...>>> {};
99 template <
typename TL1,
typename TL2>
105 template <
typename TL1,
typename TL2>
110 #endif // EAGINE_MP_LIST_HPP
Common code is placed in this namespace.
Definition: eagine.hpp:21
Implements the contains operation on compile-time type lists.
Definition: mp_list.hpp:47
Implements the union operation on compile-time type lists.
Definition: mp_list.hpp:76
Compile-time type list template.
Definition: mp_list.hpp:20
Implements the is_empty operation on compile-time type lists.
Definition: mp_list.hpp:29