3 #ifndef INCLUDE_NN_NLIB_TESTING_PARAMTYPETYPES_H_ 4 #define INCLUDE_NN_NLIB_TESTING_PARAMTYPETYPES_H_ 9 #ifdef NLIB_CXX11_VARIADIC_TEMPLATES 11 template <
class HEAD,
class... TAIL>
14 typedef Types<TAIL...> Tail;
15 typedef Types<HEAD, TAIL...> type;
21 typedef Types<HEAD> type;
25 typedef Types<Tp0> type;
35 template <
class T1,
class T2>
40 template <
class T1,
class T2,
class T3>
43 typedef Tp2<T2, T3> Tail;
45 template <
class T1,
class T2,
class T3,
class T4>
48 typedef Tp3<T2, T3, T4> Tail;
50 template <
class T1,
class T2,
class T3,
class T4,
class T5>
53 typedef Tp4<T2, T3, T4, T5> Tail;
55 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
58 typedef Tp5<T2, T3, T4, T5, T6> Tail;
60 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7>
63 typedef Tp6<T2, T3, T4, T5, T6, T7> Tail;
65 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8>
68 typedef Tp7<T2, T3, T4, T5, T6, T7, T8> Tail;
70 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9>
73 typedef Tp8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
75 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
79 typedef Tp9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
81 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
86 typedef Tp10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
88 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
89 class T10,
class T11,
class T12>
92 typedef Tp11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
94 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
95 class T10,
class T11,
class T12,
class T13>
98 typedef Tp12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
100 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
101 class T10,
class T11,
class T12,
class T13,
class T14>
104 typedef Tp13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
106 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
107 class T10,
class T11,
class T12,
class T13,
class T14,
class T15>
110 typedef Tp14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Tail;
113 template <
class T1 = None,
class T2 = None,
class T3 = None,
class T4 = None,
class T5 = None,
114 class T6 = None,
class T7 = None,
class T8 = None,
class T9 = None,
class T10 = None,
115 class T11 = None,
class T12 = None,
class T13 = None,
class T14 = None,
class T15 = None>
117 typedef Tp15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> type;
121 struct Types<None, None, None, None, None, None, None, None, None, None, None, None, None, None,
126 struct Types<T1, None, None, None, None, None, None, None, None, None, None, None, None, None,
128 typedef Tp1<T1> type;
130 template <
class T1,
class T2>
131 struct Types<T1, T2, None, None, None, None, None, None, None, None, None, None, None, None,
133 typedef Tp2<T1, T2> type;
135 template <
class T1,
class T2,
class T3>
136 struct Types<T1, T2, T3, None, None, None, None, None, None, None, None, None, None, None, None> {
137 typedef Tp3<T1, T2, T3> type;
139 template <
class T1,
class T2,
class T3,
class T4>
140 struct Types<T1, T2, T3, T4, None, None, None, None, None, None, None, None, None, None, None> {
141 typedef Tp4<T1, T2, T3, T4> type;
143 template <
class T1,
class T2,
class T3,
class T4,
class T5>
144 struct Types<T1, T2, T3, T4, T5, None, None, None, None, None, None, None, None, None, None> {
145 typedef Tp5<T1, T2, T3, T4, T5> type;
147 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6>
148 struct Types<T1, T2, T3, T4, T5, T6, None, None, None, None, None, None, None, None, None> {
149 typedef Tp6<T1, T2, T3, T4, T5, T6> type;
151 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7>
152 struct Types<T1, T2, T3, T4, T5, T6, T7, None, None, None, None, None, None, None, None> {
153 typedef Tp7<T1, T2, T3, T4, T5, T6, T7> type;
155 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8>
156 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, None, None, None, None, None, None, None> {
157 typedef Tp8<T1, T2, T3, T4, T5, T6, T7, T8> type;
159 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9>
160 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, None, None, None, None, None, None> {
161 typedef Tp9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
163 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
165 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, None, None, None, None, None> {
166 typedef Tp10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
168 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
169 class T10,
class T11>
170 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, None, None, None, None> {
171 typedef Tp11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
173 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
174 class T10,
class T11,
class T12>
175 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, None, None, None> {
176 typedef Tp12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
178 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
179 class T10,
class T11,
class T12,
class T13>
180 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, None, None> {
181 typedef Tp13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> type;
183 template <
class T1,
class T2,
class T3,
class T4,
class T5,
class T6,
class T7,
class T8,
class T9,
184 class T10,
class T11,
class T12,
class T13,
class T14>
185 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, None> {
186 typedef Tp14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> type;
193 #endif // INCLUDE_NN_NLIB_TESTING_PARAMTYPETYPES_H_