1#ifndef DEUNIFY_TEMPLATE_HPP_
2#define DEUNIFY_TEMPLATE_HPP_
11 template<
typename...>
typename Template
17 template<
typename...>
typename Template
23#define PACK(...) __VA_ARGS__
25#define DEUNIFY_TEMPLATE(MetaArity, TemplateType, ExpandedArgs) \
27 template<typename...> typename Template \
29 struct FixTemplateArityTyped<MetaArity, Template> \
34 using type = typename Template<ExpandedArgs>::type; \
39 template<typename...> typename Template \
41 struct FixTemplateArityValued<MetaArity, Template> \
46 static constexpr auto value \
47 = Template<ExpandedArgs>::value; \
55namespace implementation_details_
62DEUNIFY_TEMPLATE(
MetaArity::N5,
PACK(template<class T1, class T2, class T3, class T4, class T5>),
PACK(T1, T2, T3, T4, T5));
63DEUNIFY_TEMPLATE(
MetaArity::N6,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6>),
PACK(T1, T2, T3, T4, T5, T6));
64DEUNIFY_TEMPLATE(
MetaArity::N7,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7>),
PACK(T1, T2, T3, T4, T5, T6, T7));
65DEUNIFY_TEMPLATE(
MetaArity::N8,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>),
PACK(T1, T2, T3, T4, T5, T6, T8));
66DEUNIFY_TEMPLATE(
MetaArity::N9,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9));
67DEUNIFY_TEMPLATE(
MetaArity::N10,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10));
68DEUNIFY_TEMPLATE(
MetaArity::N11,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10, T11));
69DEUNIFY_TEMPLATE(
MetaArity::N12,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10, T11, T12));
70DEUNIFY_TEMPLATE(
MetaArity::N13,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10, T11, T12, T13));
71DEUNIFY_TEMPLATE(
MetaArity::N14,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10, T11, T12, T13, T14));
72DEUNIFY_TEMPLATE(
MetaArity::N15,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10, T11, T12, T13, T14, T15));
73DEUNIFY_TEMPLATE(
MetaArity::N16,
PACK(template<class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>),
PACK(T1, T2, T3, T4, T5, T6, T8, T9, T10, T11, T12, T13, T14, T15, T16));
79 template<
typename...>
typename Template
85 template<
typename...>
typename Template
92#undef DEUNIFY_TEMPLATE