23#ifndef VCL_MESH_COMPONENTS_BASE_PREDICATES_H
24#define VCL_MESH_COMPONENTS_BASE_PREDICATES_H
55template<
typename T,
template<
typename,
bool>
class Template>
56struct IsSpecializationOfComp : std::false_type
60template<
template<
typename,
bool>
class Template,
typename T,
bool B>
61struct IsSpecializationOfComp<Template<T, B>, Template> : std::true_type
65template<
typename T,
template<
typename,
bool>
class Template>
66struct IsDerivedFromSpecializationOfComp
69 template<
typename TT,
bool B>
70 static std::true_type test(
const Template<TT, B>*);
71 static std::false_type test(...);
74 static constexpr bool value =
75 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
80template<
typename T,
template<
typename,
bool>
class Template>
82 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
91template<
typename T,
template<
int,
typename,
bool>
class Template>
92struct IsSpecializationOfComp : std::false_type
97 template<
int,
typename,
bool>
102struct IsSpecializationOfComp<Template<I, T, B>, Template> : std::true_type
106template<
typename T,
template<
int,
typename,
bool>
class Template>
107struct IsDerivedFromSpecializationOfComp
110 template<
int I,
typename TT,
bool B>
111 static std::true_type test(
const Template<I, TT, B>*);
112 static std::false_type test(...);
115 static constexpr bool value =
116 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
121template<
typename T,
template<
int,
typename,
bool>
class Template>
123 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
132template<
typename T,
template<
typename,
typename,
bool>
class Template>
133struct IsSpecializationOfComp : std::false_type
138 template<
typename,
typename,
bool>
143struct IsSpecializationOfComp<Template<T1, T2, B>, Template> : std::true_type
147template<
typename T,
template<
typename,
typename,
bool>
class Template>
148struct IsDerivedFromSpecializationOfComp
151 template<
typename T1,
typename T2,
bool B>
152 static std::true_type test(
const Template<T1, T2, B>*);
153 static std::false_type test(...);
156 static constexpr bool value =
157 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
162template<
typename T,
template<
typename,
typename,
bool>
class Template>
164 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
173template<
typename T,
template<
typename,
int,
typename,
bool>
class Template>
174struct IsSpecializationOfComp : std::false_type
179 template<
typename,
int,
typename,
bool>
185struct IsSpecializationOfComp<Template<T1, I, T2, B>, Template> : std::true_type
189template<
typename T,
template<
typename,
int,
typename,
bool>
class Template>
190struct IsDerivedFromSpecializationOfComp
193 template<
typename T1,
int I,
typename T2,
bool B>
194 static std::true_type test(
const Template<T1, I, T2, B>*);
195 static std::false_type test(...);
198 static constexpr bool value =
199 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
204template<
typename T,
template<
typename,
int,
typename,
bool>
class Template>
206 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
217 template<
bool,
typename,
int,
typename,
bool>
219struct IsSpecializationOfComp : std::false_type
224 template<
bool,
typename,
int,
typename,
bool>
231struct IsSpecializationOfComp<Template<B1, T1, I, T2, B2>, Template> :
238 template<
bool,
typename,
int,
typename,
bool>
240struct IsDerivedFromSpecializationOfComp
243 template<
bool B1,
typename T1,
int I,
typename T2,
bool B2>
244 static std::true_type test(
const Template<B1, T1, I, T2, B2>*);
245 static std::false_type test(...);
248 static constexpr bool value =
249 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
256 template<
bool,
typename,
int,
typename,
bool>
259 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
270 template<
bool,
typename,
typename,
bool,
bool>
272struct IsSpecializationOfComp : std::false_type
277 template<
bool,
typename,
typename,
bool,
bool>
284struct IsSpecializationOfComp<Template<B1, T1, T2, B2, B3>, Template> :
291 template<
bool,
typename,
typename,
bool,
bool>
293struct IsDerivedFromSpecializationOfComp
296 template<
bool B1,
typename T1,
typename T2,
bool B2,
bool B3>
297 static std::true_type test(
const Template<B1, T1, T2, B2, B3>*);
298 static std::false_type test(...);
301 static constexpr bool value =
302 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
309 template<
bool,
typename,
typename,
bool,
bool>
312 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
323 template<
bool,
typename,
int,
bool,
typename,
bool,
bool>
325struct IsSpecializationOfComp : std::false_type
330 template<
bool,
typename,
int,
bool,
typename,
bool,
bool>
339struct IsSpecializationOfComp<Template<B1, T1, I, B2, T2, B3, B4>, Template> :
346 template<
bool,
typename,
int,
bool,
typename,
bool,
bool>
348struct IsDerivedFromSpecializationOfComp
359 static std::true_type test(
const Template<B1, T1, I, B2, T2, B3, B4>*);
360 static std::false_type test(...);
363 static constexpr bool value =
364 decltype(test(std::declval<std::remove_cvref_t<T>*>()))::value;
371 template<
bool,
typename,
int,
bool,
typename,
bool,
bool>
374 detail::IsDerivedFromSpecializationOfComp<T, Template>::value;
constexpr bool IsDerivedFromSpecializationOfV
Alias for IsDerivedFromSpecializationOf trait.
Definition variadic_templates.h:285