19#ifndef MTCORE_META_BASE_HPP
20#define MTCORE_META_BASE_HPP
38 template<
bool Cond,
typename L,
typename R>
41 template<
typename L,
typename R>
42 struct If<true, L, R> {
44 static constexpr auto value =
true;
47 template<
typename L,
typename R>
48 struct If<false, L, R> {
50 static constexpr auto value =
false;
58 template<
bool... Conds>
60 static constexpr auto value = (Conds && ...);
68 template<
bool... Conds>
70 static constexpr auto value = (Conds || ...);
83 static constexpr size_t size = 0;
84 static constexpr bool empty =
true;
86 static constexpr bool has =
false;
89 template<
int Head,
int... Rest>
91 static constexpr auto head = Head;
93 static constexpr size_t size = 1 + Next::size;
94 static constexpr bool empty =
false;
109 template<
typename... T>
114 static constexpr size_t size = 0;
118 template<
typename Head,
typename... Rest>
122 static constexpr size_t size = 1 + Next::size;
123 static constexpr bool empty =
false;
131 template<
typename... T>
139 template<
int... L1,
int... L2,
typename... LRest>