Ardour  9.0-pre0-350-gf17a656217
FuncTraits.h
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 /*
3  https://github.com/vinniefalco/LuaBridge
4 
5  Copyright 2012, Vinnie Falco <vinnie.falco@gmail.com>
6 
7  License: The MIT License (http://www.opensource.org/licenses/mit-license.php)
8 
9  Permission is hereby granted, free of charge, to any person obtaining a copy
10  of this software and associated documentation files (the "Software"), to deal
11  in the Software without restriction, including without limitation the rights
12  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13  copies of the Software, and to permit persons to whom the Software is
14  furnished to do so, subject to the following conditions:
15 
16  The above copyright notice and this permission notice shall be included in all
17  copies or substantial portions of the Software.
18 
19  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25  SOFTWARE.
26 */
27 //==============================================================================
28 
35 #if defined (__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__clang__) || defined(__GNUC__) || \
36  (defined (_MSC_VER) && (_MSC_VER >= 1700))
37 // Do not define LUABRIDGE_THROWSPEC since the Xcode and gcc compilers do not
38 // distinguish the throw specification in the function signature.
39 #else
40 // Visual Studio 10 and earlier pay too much mind to useless throw() spec.
41 //
42 # define LUABRIDGE_THROWSPEC throw()
43 #endif
44 
45 //==============================================================================
57 template <class MemFn, class D = MemFn>
58 struct FuncTraits
59 {
60 };
61 
62 /* Ordinary function pointers. */
63 
64 template <class R, class D>
65 struct FuncTraits <R (*) (), D>
66 {
67  static bool const isMemberFunction = false;
68  typedef D DeclType;
69  typedef R ReturnType;
70  typedef None Params;
71  static R call (D fp, TypeListValues <Params>)
72  {
73  return fp ();
74  }
75 };
76 
77 template <class R, class P1, class D>
78 struct FuncTraits <R (*) (P1), D>
79 {
80  static bool const isMemberFunction = false;
81  typedef D DeclType;
82  typedef R ReturnType;
84  static R call (D fp, TypeListValues <Params>& tvl)
85  {
86  return fp (tvl.hd);
87  }
88 };
89 
90 template <class R, class P1, class P2, class D>
91 struct FuncTraits <R (*) (P1, P2), D>
92 {
93  static bool const isMemberFunction = false;
94  typedef D DeclType;
95  typedef R ReturnType;
97  static R call (D fp, TypeListValues <Params>& tvl)
98  {
99  return fp (tvl.hd, tvl.tl.hd);
100  }
101 };
102 
103 template <class R, class P1, class P2, class P3, class D>
104 struct FuncTraits <R (*) (P1, P2, P3), D>
105 {
106  static bool const isMemberFunction = false;
107  typedef D DeclType;
108  typedef R ReturnType;
110  static R call (D fp, TypeListValues <Params>& tvl)
111  {
112  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd);
113  }
114 };
115 
116 template <class R, class P1, class P2, class P3, class P4, class D>
117 struct FuncTraits <R (*) (P1, P2, P3, P4), D>
118 {
119  static bool const isMemberFunction = false;
120  typedef D DeclType;
121  typedef R ReturnType;
123  static R call (D fp, TypeListValues <Params>& tvl)
124  {
125  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd);
126  }
127 };
128 
129 template <class R, class P1, class P2, class P3, class P4, class P5, class D>
130 struct FuncTraits <R (*) (P1, P2, P3, P4, P5), D>
131 {
132  static bool const isMemberFunction = false;
133  typedef D DeclType;
134  typedef R ReturnType;
136  static R call (D fp, TypeListValues <Params>& tvl)
137  {
138  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd);
139  }
140 };
141 
142 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class D>
143 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6), D>
144 {
145  static bool const isMemberFunction = false;
146  typedef D DeclType;
147  typedef R ReturnType;
149  static R call (D fp, TypeListValues <Params>& tvl)
150  {
151  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd);
152  }
153 };
154 
155 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class D>
156 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7), D>
157 {
158  static bool const isMemberFunction = false;
159  typedef D DeclType;
160  typedef R ReturnType;
162  static R call (D fp, TypeListValues <Params>& tvl)
163  {
164  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd);
165  }
166 };
167 
168 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class D>
169 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8), D>
170 {
171  static bool const isMemberFunction = false;
172  typedef D DeclType;
173  typedef R ReturnType;
175  static R call (D fp, TypeListValues <Params>& tvl)
176  {
177  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd);
178  }
179 };
180 
181 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class D>
182 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9), D>
183 {
184  static bool const isMemberFunction = false;
185  typedef D DeclType;
186  typedef R ReturnType;
188  static R call (D fp, TypeListValues <Params>& tvl)
189  {
190  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
191  }
192 };
193 
194 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class D>
195 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10), D>
196 {
197  static bool const isMemberFunction = false;
198  typedef D DeclType;
199  typedef R ReturnType;
201  static R call (D fp, TypeListValues <Params>& tvl)
202  {
203  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
204  }
205 };
206 
207 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class D>
208 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11), D>
209 {
210  static bool const isMemberFunction = false;
211  typedef D DeclType;
212  typedef R ReturnType;
214  static R call (D fp, TypeListValues <Params>& tvl)
215  {
216  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
217  }
218 };
219 
220 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12, class D>
221 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12), D>
222 {
223  static bool const isMemberFunction = false;
224  typedef D DeclType;
225  typedef R ReturnType;
227  static R call (D fp, TypeListValues <Params>& tvl)
228  {
229  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
230  }
231 };
232 
233 /* Non-const member function pointers. */
234 
235 template <class T, class R, class D>
236 struct FuncTraits <R (T::*) (), D>
237 {
238  static bool const isMemberFunction = true;
239  static bool const isConstMemberFunction = false;
240  typedef D DeclType;
241  typedef T ClassType;
242  typedef R ReturnType;
243  typedef None Params;
244  static R call (T* obj, D fp, TypeListValues <Params>)
245  {
246  return (obj->*fp)();
247  }
248 };
249 
250 template <class T, class R, class P1, class D>
251 struct FuncTraits <R (T::*) (P1), D>
252 {
253  static bool const isMemberFunction = true;
254  static bool const isConstMemberFunction = false;
255  typedef D DeclType;
256  typedef T ClassType;
257  typedef R ReturnType;
259  static R call (T* obj, D fp, TypeListValues <Params> &tvl)
260  {
261  return (obj->*fp)(tvl.hd);
262  }
263 };
264 
265 template <class T, class R, class P1, class P2, class D>
266 struct FuncTraits <R (T::*) (P1, P2), D>
267 {
268  static bool const isMemberFunction = true;
269  static bool const isConstMemberFunction = false;
270  typedef D DeclType;
271  typedef T ClassType;
272  typedef R ReturnType;
274  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
275  {
276  return (obj->*fp)(tvl.hd, tvl.tl.hd);
277  }
278 };
279 
280 template <class T, class R, class P1, class P2, class P3, class D>
281 struct FuncTraits <R (T::*) (P1, P2, P3), D>
282 {
283  static bool const isMemberFunction = true;
284  static bool const isConstMemberFunction = false;
285  typedef D DeclType;
286  typedef T ClassType;
287  typedef R ReturnType;
289  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
290  {
291  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd);
292  }
293 };
294 
295 template <class T, class R, class P1, class P2, class P3, class P4, class D>
296 struct FuncTraits <R (T::*) (P1, P2, P3, P4), D>
297 {
298  static bool const isMemberFunction = true;
299  static bool const isConstMemberFunction = false;
300  typedef D DeclType;
301  typedef T ClassType;
302  typedef R ReturnType;
304  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
305  {
306  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd);
307  }
308 };
309 
310 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class D>
311 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5), D>
312 {
313  static bool const isMemberFunction = true;
314  static bool const isConstMemberFunction = false;
315  typedef D DeclType;
316  typedef T ClassType;
317  typedef R ReturnType;
319  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
320  {
321  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd);
322  }
323 };
324 
325 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class D>
326 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6), D>
327 {
328  static bool const isMemberFunction = true;
329  static bool const isConstMemberFunction = false;
330  typedef D DeclType;
331  typedef T ClassType;
332  typedef R ReturnType;
334  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
335  {
336  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd);
337  }
338 };
339 
340 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class D>
341 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7), D>
342 {
343  static bool const isMemberFunction = true;
344  static bool const isConstMemberFunction = false;
345  typedef D DeclType;
346  typedef T ClassType;
347  typedef R ReturnType;
349  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
350  {
351  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd);
352  }
353 };
354 
355 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class D>
356 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8), D>
357 {
358  static bool const isMemberFunction = true;
359  static bool const isConstMemberFunction = false;
360  typedef D DeclType;
361  typedef T ClassType;
362  typedef R ReturnType;
364  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
365  {
366  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd);
367  }
368 };
369 
370 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class D>
371 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9), D>
372 {
373  static bool const isMemberFunction = true;
374  static bool const isConstMemberFunction = false;
375  typedef D DeclType;
376  typedef T ClassType;
377  typedef R ReturnType;
379  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
380  {
381  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
382  }
383 };
384 
385 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class D>
386 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10), D>
387 {
388  static bool const isMemberFunction = true;
389  static bool const isConstMemberFunction = false;
390  typedef D DeclType;
391  typedef T ClassType;
392  typedef R ReturnType;
394  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
395  {
396  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
397  }
398 };
399 
400 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class D>
401 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11), D>
402 {
403  static bool const isMemberFunction = true;
404  static bool const isConstMemberFunction = false;
405  typedef D DeclType;
406  typedef T ClassType;
407  typedef R ReturnType;
409  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
410  {
411  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
412  }
413 };
414 
415 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12, class D>
416 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12), D>
417 {
418  static bool const isMemberFunction = true;
419  static bool const isConstMemberFunction = false;
420  typedef D DeclType;
421  typedef T ClassType;
422  typedef R ReturnType;
424  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
425  {
426  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
427  }
428 };
429 
430 /* Const member function pointers. */
431 
432 template <class T, class R, class D>
433 struct FuncTraits <R (T::*) () const, D>
434 {
435  static bool const isMemberFunction = true;
436  static bool const isConstMemberFunction = true;
437  typedef D DeclType;
438  typedef T ClassType;
439  typedef R ReturnType;
440  typedef None Params;
441  static R call (T const* obj, D fp, TypeListValues <Params>)
442  {
443  return (obj->*fp)();
444  }
445 };
446 
447 template <class T, class R, class P1, class D>
448 struct FuncTraits <R (T::*) (P1) const, D>
449 {
450  static bool const isMemberFunction = true;
451  static bool const isConstMemberFunction = true;
452  typedef D DeclType;
453  typedef T ClassType;
454  typedef R ReturnType;
456  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
457  {
458  return (obj->*fp)(tvl.hd);
459  }
460 };
461 
462 template <class T, class R, class P1, class P2, class D>
463 struct FuncTraits <R (T::*) (P1, P2) const, D>
464 {
465  static bool const isMemberFunction = true;
466  static bool const isConstMemberFunction = true;
467  typedef D DeclType;
468  typedef T ClassType;
469  typedef R ReturnType;
471  static R call (T const* obj, R (T::*fp) (P1, P2) const,
473  {
474  return (obj->*fp)(tvl.hd, tvl.tl.hd);
475  }
476 };
477 
478 template <class T, class R, class P1, class P2, class P3, class D>
479 struct FuncTraits <R (T::*) (P1, P2, P3) const, D>
480 {
481  static bool const isMemberFunction = true;
482  static bool const isConstMemberFunction = true;
483  typedef D DeclType;
484  typedef T ClassType;
485  typedef R ReturnType;
487  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
488  {
489  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd);
490  }
491 };
492 
493 template <class T, class R, class P1, class P2, class P3, class P4, class D>
494 struct FuncTraits <R (T::*) (P1, P2, P3, P4) const, D>
495 {
496  static bool const isMemberFunction = true;
497  static bool const isConstMemberFunction = true;
498  typedef D DeclType;
499  typedef T ClassType;
500  typedef R ReturnType;
502  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
503  {
504  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd);
505  }
506 };
507 
508 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class D>
509 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5) const, D>
510 {
511  static bool const isMemberFunction = true;
512  static bool const isConstMemberFunction = true;
513  typedef D DeclType;
514  typedef T ClassType;
515  typedef R ReturnType;
517  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
518  {
519  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd);
520  }
521 };
522 
523 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class D>
524 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6) const, D>
525 {
526  static bool const isMemberFunction = true;
527  static bool const isConstMemberFunction = true;
528  typedef D DeclType;
529  typedef T ClassType;
530  typedef R ReturnType;
532  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
533  {
534  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd);
535  }
536 };
537 
538 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class D>
539 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7) const, D>
540 {
541  static bool const isMemberFunction = true;
542  static bool const isConstMemberFunction = true;
543  typedef D DeclType;
544  typedef T ClassType;
545  typedef R ReturnType;
547  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
548  {
549  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd);
550  }
551 };
552 
553 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class D>
554 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8) const, D>
555 {
556  static bool const isMemberFunction = true;
557  static bool const isConstMemberFunction = true;
558  typedef D DeclType;
559  typedef T ClassType;
560  typedef R ReturnType;
562  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
563  {
564  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd);
565  }
566 };
567 
568 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class D>
569 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9) const, D>
570 {
571  static bool const isMemberFunction = true;
572  static bool const isConstMemberFunction = true;
573  typedef D DeclType;
574  typedef T ClassType;
575  typedef R ReturnType;
577  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
578  {
579  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
580  }
581 };
582 
583 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class D>
584 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const, D>
585 {
586  static bool const isMemberFunction = true;
587  static bool const isConstMemberFunction = true;
588  typedef D DeclType;
589  typedef T ClassType;
590  typedef R ReturnType;
592  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
593  {
594  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
595  }
596 };
597 
598 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12, class D>
599 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const, D>
600 {
601  static bool const isMemberFunction = true;
602  static bool const isConstMemberFunction = true;
603  typedef D DeclType;
604  typedef T ClassType;
605  typedef R ReturnType;
607  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
608  {
609  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
610  }
611 };
612 
613 
614 #if defined (LUABRIDGE_THROWSPEC)
615 
616 /* Ordinary function pointers. */
617 
618 template <class R, class D>
619 struct FuncTraits <R (*) () LUABRIDGE_THROWSPEC, D>
620 {
621  static bool const isMemberFunction = false;
622  typedef D DeclType;
623  typedef R ReturnType;
624  typedef None Params;
625  static R call (D fp, TypeListValues <Params> const&)
626  {
627  return fp ();
628  }
629 };
630 
631 template <class R, class P1, class D>
632 struct FuncTraits <R (*) (P1) LUABRIDGE_THROWSPEC, D>
633 {
634  static bool const isMemberFunction = false;
635  typedef D DeclType;
636  typedef R ReturnType;
638  static R call (D fp, TypeListValues <Params>& tvl)
639  {
640  return fp (tvl.hd);
641  }
642 };
643 
644 template <class R, class P1, class P2, class D>
645 struct FuncTraits <R (*) (P1, P2) LUABRIDGE_THROWSPEC, D>
646 {
647  static bool const isMemberFunction = false;
648  typedef D DeclType;
649  typedef R ReturnType;
651  static R call (D fp, TypeListValues <Params>& tvl)
652  {
653  return fp (tvl.hd, tvl.tl.hd);
654  }
655 };
656 
657 template <class R, class P1, class P2, class P3, class D>
658 struct FuncTraits <R (*) (P1, P2, P3) LUABRIDGE_THROWSPEC, D>
659 {
660  static bool const isMemberFunction = false;
661  typedef D DeclType;
662  typedef R ReturnType;
664  static R call (D fp, TypeListValues <Params>& tvl)
665  {
666  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd);
667  }
668 };
669 
670 template <class R, class P1, class P2, class P3, class P4, class D>
671 struct FuncTraits <R (*) (P1, P2, P3, P4) LUABRIDGE_THROWSPEC, D>
672 {
673  static bool const isMemberFunction = false;
674  typedef D DeclType;
675  typedef R ReturnType;
677  static R call (D fp, TypeListValues <Params>& tvl)
678  {
679  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd);
680  }
681 };
682 
683 template <class R, class P1, class P2, class P3, class P4, class P5, class D>
684 struct FuncTraits <R (*) (P1, P2, P3, P4, P5) LUABRIDGE_THROWSPEC, D>
685 {
686  static bool const isMemberFunction = false;
687  typedef D DeclType;
688  typedef R ReturnType;
690  static R call (D fp, TypeListValues <Params>& tvl)
691  {
692  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd);
693  }
694 };
695 
696 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class D>
697 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6) LUABRIDGE_THROWSPEC, D>
698 {
699  static bool const isMemberFunction = false;
700  typedef D DeclType;
701  typedef R ReturnType;
703  static R call (D fp, TypeListValues <Params>& tvl)
704  {
705  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd);
706  }
707 };
708 
709 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class D>
710 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7) LUABRIDGE_THROWSPEC, D>
711 {
712  static bool const isMemberFunction = false;
713  typedef D DeclType;
714  typedef R ReturnType;
716  static R call (D fp, TypeListValues <Params>& tvl)
717  {
718  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd);
719  }
720 };
721 
722 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class D>
723 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8) LUABRIDGE_THROWSPEC, D>
724 {
725  static bool const isMemberFunction = false;
726  typedef D DeclType;
727  typedef R ReturnType;
729  static R call (D fp, TypeListValues <Params>& tvl)
730  {
731  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd);
732  }
733 };
734 
735 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class D>
736 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9) LUABRIDGE_THROWSPEC, D>
737 {
738  static bool const isMemberFunction = false;
739  typedef D DeclType;
740  typedef R ReturnType;
742  static R call (D fp, TypeListValues <Params>& tvl)
743  {
744  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
745  }
746 };
747 
748 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class D>
749 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) LUABRIDGE_THROWSPEC, D>
750 {
751  static bool const isMemberFunction = false;
752  typedef D DeclType;
753  typedef R ReturnType;
755  static R call (D fp, TypeListValues <Params>& tvl)
756  {
757  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
758  }
759 };
760 
761 template <class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12, class D>
762 struct FuncTraits <R (*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) LUABRIDGE_THROWSPEC, D>
763 {
764  static bool const isMemberFunction = false;
765  typedef D DeclType;
766  typedef R ReturnType;
768  static R call (D fp, TypeListValues <Params>& tvl)
769  {
770  return fp (tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
771  }
772 };
773 
774 /* Non-const member function pointers with THROWSPEC. */
775 
776 template <class T, class R, class D>
777 struct FuncTraits <R (T::*) () LUABRIDGE_THROWSPEC, D>
778 {
779  static bool const isMemberFunction = true;
780  static bool const isConstMemberFunction = false;
781  typedef D DeclType;
782  typedef T ClassType;
783  typedef R ReturnType;
784  typedef None Params;
785  static R call (T* obj, D fp, TypeListValues <Params> const&)
786  {
787  return (obj->*fp)();
788  }
789 };
790 
791 template <class T, class R, class P1, class D>
792 struct FuncTraits <R (T::*) (P1) LUABRIDGE_THROWSPEC, D>
793 {
794  static bool const isMemberFunction = true;
795  static bool const isConstMemberFunction = false;
796  typedef D DeclType;
797  typedef T ClassType;
798  typedef R ReturnType;
800  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
801  {
802  return (obj->*fp)(tvl.hd);
803  }
804 };
805 
806 template <class T, class R, class P1, class P2, class D>
807 struct FuncTraits <R (T::*) (P1, P2) LUABRIDGE_THROWSPEC, D>
808 {
809  static bool const isMemberFunction = true;
810  static bool const isConstMemberFunction = false;
811  typedef D DeclType;
812  typedef T ClassType;
813  typedef R ReturnType;
815  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
816  {
817  return (obj->*fp)(tvl.hd, tvl.tl.hd);
818  }
819 };
820 
821 template <class T, class R, class P1, class P2, class P3, class D>
822 struct FuncTraits <R (T::*) (P1, P2, P3) LUABRIDGE_THROWSPEC, D>
823 {
824  static bool const isMemberFunction = true;
825  static bool const isConstMemberFunction = false;
826  typedef D DeclType;
827  typedef T ClassType;
828  typedef R ReturnType;
830  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
831  {
832  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd);
833  }
834 };
835 
836 template <class T, class R, class P1, class P2, class P3, class P4, class D>
837 struct FuncTraits <R (T::*) (P1, P2, P3, P4) LUABRIDGE_THROWSPEC, D>
838 {
839  static bool const isMemberFunction = true;
840  static bool const isConstMemberFunction = false;
841  typedef D DeclType;
842  typedef T ClassType;
843  typedef R ReturnType;
845  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
846  {
847  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd);
848  }
849 };
850 
851 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class D>
852 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5) LUABRIDGE_THROWSPEC, D>
853 {
854  static bool const isMemberFunction = true;
855  static bool const isConstMemberFunction = false;
856  typedef D DeclType;
857  typedef T ClassType;
858  typedef R ReturnType;
860  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
861  {
862  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd);
863  }
864 };
865 
866 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class D>
867 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6) LUABRIDGE_THROWSPEC, D>
868 {
869  static bool const isMemberFunction = true;
870  static bool const isConstMemberFunction = false;
871  typedef D DeclType;
872  typedef T ClassType;
873  typedef R ReturnType;
875  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
876  {
877  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd);
878  }
879 };
880 
881 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class D>
882 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7) LUABRIDGE_THROWSPEC, D>
883 {
884  static bool const isMemberFunction = true;
885  static bool const isConstMemberFunction = false;
886  typedef D DeclType;
887  typedef T ClassType;
888  typedef R ReturnType;
890  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
891  {
892  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd);
893  }
894 };
895 
896 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class D>
897 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8) LUABRIDGE_THROWSPEC, D>
898 {
899  static bool const isMemberFunction = true;
900  static bool const isConstMemberFunction = false;
901  typedef D DeclType;
902  typedef T ClassType;
903  typedef R ReturnType;
905  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
906  {
907  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd);
908  }
909 };
910 
911 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class D>
912 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9) LUABRIDGE_THROWSPEC, D>
913 {
914  static bool const isMemberFunction = true;
915  static bool const isConstMemberFunction = false;
916  typedef D DeclType;
917  typedef T ClassType;
918  typedef R ReturnType;
920  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
921  {
922  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
923  }
924 };
925 
926 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class D>
927 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) LUABRIDGE_THROWSPEC, D>
928 {
929  static bool const isMemberFunction = true;
930  static bool const isConstMemberFunction = false;
931  typedef D DeclType;
932  typedef T ClassType;
933  typedef R ReturnType;
935  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
936  {
937  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
938  }
939 };
940 
941 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12, class D>
942 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) LUABRIDGE_THROWSPEC, D>
943 {
944  static bool const isMemberFunction = true;
945  static bool const isConstMemberFunction = false;
946  typedef D DeclType;
947  typedef T ClassType;
948  typedef R ReturnType;
950  static R call (T* obj, D fp, TypeListValues <Params>& tvl)
951  {
952  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
953  }
954 };
955 
956 
957 /* Const member function pointers with THROWSPEC. */
958 
959 template <class T, class R, class D>
960 struct FuncTraits <R (T::*) () const LUABRIDGE_THROWSPEC, D>
961 {
962  static bool const isMemberFunction = true;
963  static bool const isConstMemberFunction = true;
964  typedef D DeclType;
965  typedef T ClassType;
966  typedef R ReturnType;
967  typedef None Params;
968  static R call (T const* obj, D fp, TypeListValues <Params>)
969  {
970  return (obj->*fp)();
971  }
972 };
973 
974 template <class T, class R, class P1, class D>
975 struct FuncTraits <R (T::*) (P1) const LUABRIDGE_THROWSPEC, D>
976 {
977  static bool const isMemberFunction = true;
978  static bool const isConstMemberFunction = true;
979  typedef D DeclType;
980  typedef T ClassType;
981  typedef R ReturnType;
983  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
984  {
985  return (obj->*fp)(tvl.hd);
986  }
987 };
988 
989 template <class T, class R, class P1, class P2, class D>
990 struct FuncTraits <R (T::*) (P1, P2) const LUABRIDGE_THROWSPEC, D>
991 {
992  static bool const isMemberFunction = true;
993  static bool const isConstMemberFunction = true;
994  typedef D DeclType;
995  typedef T ClassType;
996  typedef R ReturnType;
998  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
999  {
1000  return (obj->*fp)(tvl.hd, tvl.tl.hd);
1001  }
1002 };
1003 
1004 template <class T, class R, class P1, class P2, class P3, class D>
1005 struct FuncTraits <R (T::*) (P1, P2, P3) const LUABRIDGE_THROWSPEC, D>
1006 {
1007  static bool const isMemberFunction = true;
1008  static bool const isConstMemberFunction = true;
1009  typedef D DeclType;
1010  typedef T ClassType;
1011  typedef R ReturnType;
1013  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1014  {
1015  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd);
1016  }
1017 };
1018 
1019 template <class T, class R, class P1, class P2, class P3, class P4, class D>
1020 struct FuncTraits <R (T::*) (P1, P2, P3, P4) const LUABRIDGE_THROWSPEC, D>
1021 {
1022  static bool const isMemberFunction = true;
1023  static bool const isConstMemberFunction = true;
1024  typedef D DeclType;
1025  typedef T ClassType;
1026  typedef R ReturnType;
1028  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1029  {
1030  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd);
1031  }
1032 };
1033 
1034 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class D>
1035 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5) const LUABRIDGE_THROWSPEC, D>
1036 {
1037  static bool const isMemberFunction = true;
1038  static bool const isConstMemberFunction = true;
1039  typedef D DeclType;
1040  typedef T ClassType;
1041  typedef R ReturnType;
1043  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1044  {
1045  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd,
1046  tvl.tl.tl.tl.tl.hd);
1047  }
1048 };
1049 
1050 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class D>
1051 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6) const LUABRIDGE_THROWSPEC, D>
1052 {
1053  static bool const isMemberFunction = true;
1054  static bool const isConstMemberFunction = true;
1055  typedef D DeclType;
1056  typedef T ClassType;
1057  typedef R ReturnType;
1059  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1060  {
1061  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd);
1062  }
1063 };
1064 
1065 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class D>
1066 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7) const LUABRIDGE_THROWSPEC, D>
1067 {
1068  static bool const isMemberFunction = true;
1069  static bool const isConstMemberFunction = true;
1070  typedef D DeclType;
1071  typedef T ClassType;
1072  typedef R ReturnType;
1074  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1075  {
1076  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd);
1077  }
1078 };
1079 
1080 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class D>
1081 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8) const LUABRIDGE_THROWSPEC, D>
1082 {
1083  static bool const isMemberFunction = true;
1084  static bool const isConstMemberFunction = true;
1085  typedef D DeclType;
1086  typedef T ClassType;
1087  typedef R ReturnType;
1089  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1090  {
1091  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd);
1092  }
1093 };
1094 
1095 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class D>
1096 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9) const LUABRIDGE_THROWSPEC, D>
1097 {
1098  static bool const isMemberFunction = true;
1099  static bool const isConstMemberFunction = true;
1100  typedef D DeclType;
1101  typedef T ClassType;
1102  typedef R ReturnType;
1104  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1105  {
1106  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
1107  }
1108 };
1109 
1110 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class D>
1111 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) const LUABRIDGE_THROWSPEC, D>
1112 {
1113  static bool const isMemberFunction = true;
1114  static bool const isConstMemberFunction = true;
1115  typedef D DeclType;
1116  typedef T ClassType;
1117  typedef R ReturnType;
1119  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1120  {
1121  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
1122  }
1123 };
1124 
1125 template <class T, class R, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12, class D>
1126 struct FuncTraits <R (T::*) (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) const LUABRIDGE_THROWSPEC, D>
1127 {
1128  static bool const isMemberFunction = true;
1129  static bool const isConstMemberFunction = true;
1130  typedef D DeclType;
1131  typedef T ClassType;
1132  typedef R ReturnType;
1134  static R call (T const* obj, D fp, TypeListValues <Params>& tvl)
1135  {
1136  return (obj->*fp)(tvl.hd, tvl.tl.hd, tvl.tl.tl.hd, tvl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd, tvl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.tl.hd);
1137  }
1138 };
1139 
1140 #endif
#define LUABRIDGE_THROWSPEC
Definition: FuncTraits.h:42
void None
Definition: TypeList.h:49
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10 > > > > > > > > > > Params
Definition: FuncTraits.h:1118
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1119
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1089
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8 > > > > > > > > Params
Definition: FuncTraits.h:1088
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1104
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9 > > > > > > > > > Params
Definition: FuncTraits.h:1103
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11, TypeList< P12 > > > > > > > > > > > > Params
Definition: FuncTraits.h:949
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:950
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11, TypeList< P12 > > > > > > > > > > > > Params
Definition: FuncTraits.h:423
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:424
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10 > > > > > > > > > > Params
Definition: FuncTraits.h:934
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:935
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:409
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11 > > > > > > > > > > > Params
Definition: FuncTraits.h:408
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:920
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9 > > > > > > > > > Params
Definition: FuncTraits.h:919
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11, TypeList< P12 > > > > > > > > > > > > Params
Definition: FuncTraits.h:1133
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1134
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:592
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10 > > > > > > > > > > Params
Definition: FuncTraits.h:591
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9 > > > > > > > > > Params
Definition: FuncTraits.h:378
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:379
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:577
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9 > > > > > > > > > Params
Definition: FuncTraits.h:576
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:364
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8 > > > > > > > > Params
Definition: FuncTraits.h:363
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:562
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8 > > > > > > > > Params
Definition: FuncTraits.h:561
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:905
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8 > > > > > > > > Params
Definition: FuncTraits.h:904
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:394
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10 > > > > > > > > > > Params
Definition: FuncTraits.h:393
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:607
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11, TypeList< P12 > > > > > > > > > > > > Params
Definition: FuncTraits.h:606
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7 > > > > > > > Params
Definition: FuncTraits.h:348
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:349
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7 > > > > > > > Params
Definition: FuncTraits.h:546
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:547
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7 > > > > > > > Params
Definition: FuncTraits.h:1073
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1074
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7 > > > > > > > Params
Definition: FuncTraits.h:889
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:890
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6 > > > > > > Params
Definition: FuncTraits.h:333
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:334
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6 > > > > > > Params
Definition: FuncTraits.h:531
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:532
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1059
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6 > > > > > > Params
Definition: FuncTraits.h:1058
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6 > > > > > > Params
Definition: FuncTraits.h:874
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:875
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5 > > > > > Params
Definition: FuncTraits.h:318
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:319
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5 > > > > > Params
Definition: FuncTraits.h:516
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:517
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1043
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5 > > > > > Params
Definition: FuncTraits.h:1042
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:860
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5 > > > > > Params
Definition: FuncTraits.h:859
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:304
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4 > > > > Params
Definition: FuncTraits.h:303
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4 > > > > Params
Definition: FuncTraits.h:501
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:502
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1028
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4 > > > > Params
Definition: FuncTraits.h:1027
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4 > > > > Params
Definition: FuncTraits.h:844
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:845
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:289
TypeList< P1, TypeList< P2, TypeList< P3 > > > Params
Definition: FuncTraits.h:288
TypeList< P1, TypeList< P2, TypeList< P3 > > > Params
Definition: FuncTraits.h:486
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:487
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:1013
TypeList< P1, TypeList< P2, TypeList< P3 > > > Params
Definition: FuncTraits.h:1012
TypeList< P1, TypeList< P2, TypeList< P3 > > > Params
Definition: FuncTraits.h:829
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:830
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:274
TypeList< P1, TypeList< P2 > > Params
Definition: FuncTraits.h:273
TypeList< P1, TypeList< P2 > > Params
Definition: FuncTraits.h:470
static R call(T const *obj, R(T::*fp)(P1, P2) const, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:471
TypeList< P1, TypeList< P2 > > Params
Definition: FuncTraits.h:997
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:998
TypeList< P1, TypeList< P2 > > Params
Definition: FuncTraits.h:814
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:815
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:259
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:456
static R call(T const *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:983
static R call(T *obj, D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:800
static R call(T *obj, D fp, TypeListValues< Params >)
Definition: FuncTraits.h:244
static R call(T const *obj, D fp, TypeListValues< Params >)
Definition: FuncTraits.h:441
static R call(T const *obj, D fp, TypeListValues< Params >)
Definition: FuncTraits.h:968
static R call(T *obj, D fp, TypeListValues< Params > const &)
Definition: FuncTraits.h:785
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:201
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10 > > > > > > > > > > Params
Definition: FuncTraits.h:200
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9 > > > > > > > > > Params
Definition: FuncTraits.h:187
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:188
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11, TypeList< P12 > > > > > > > > > > > > Params
Definition: FuncTraits.h:226
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:755
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10 > > > > > > > > > > Params
Definition: FuncTraits.h:754
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:742
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9 > > > > > > > > > Params
Definition: FuncTraits.h:741
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11, TypeList< P12 > > > > > > > > > > > > Params
Definition: FuncTraits.h:767
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:214
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8, TypeList< P9, TypeList< P10, TypeList< P11 > > > > > > > > > > > Params
Definition: FuncTraits.h:213
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8 > > > > > > > > Params
Definition: FuncTraits.h:174
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:175
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:729
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7, TypeList< P8 > > > > > > > > Params
Definition: FuncTraits.h:728
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7 > > > > > > > Params
Definition: FuncTraits.h:161
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:162
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6, TypeList< P7 > > > > > > > Params
Definition: FuncTraits.h:715
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:716
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6 > > > > > > Params
Definition: FuncTraits.h:148
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:149
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5, TypeList< P6 > > > > > > Params
Definition: FuncTraits.h:702
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:703
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5 > > > > > Params
Definition: FuncTraits.h:135
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:136
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:690
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4, TypeList< P5 > > > > > Params
Definition: FuncTraits.h:689
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:123
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4 > > > > Params
Definition: FuncTraits.h:122
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:677
TypeList< P1, TypeList< P2, TypeList< P3, TypeList< P4 > > > > Params
Definition: FuncTraits.h:676
TypeList< P1, TypeList< P2, TypeList< P3 > > > Params
Definition: FuncTraits.h:109
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:110
TypeList< P1, TypeList< P2, TypeList< P3 > > > Params
Definition: FuncTraits.h:663
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:664
TypeList< P1, TypeList< P2 > > Params
Definition: FuncTraits.h:96
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:97
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:651
TypeList< P1, TypeList< P2 > > Params
Definition: FuncTraits.h:650
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:84
TypeList< P1 > Params
Definition: FuncTraits.h:83
static R call(D fp, TypeListValues< Params > &tvl)
Definition: FuncTraits.h:638
static R call(D fp, TypeListValues< Params >)
Definition: FuncTraits.h:71
static R call(D fp, TypeListValues< Params > const &)
Definition: FuncTraits.h:625