blob: 6263255c04fa37adb8e03805ca832d97e0d5923d [file] [log] [blame]
Jeff Thompsonf7d49942013-08-01 16:47:40 -07001
2// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
3// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
4//
5// Use, modification and distribution are subject to the Boost Software License,
6// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt).
8//
9// See http://www.boost.org/libs/type_traits for most recent version including documentation.
10
Jeff Thompson3d613fd2013-10-15 15:39:04 -070011#if !defined(NDNBOOST_PP_IS_ITERATING)
Jeff Thompsonf7d49942013-08-01 16:47:40 -070012
13///// header body
14
Jeff Thompson3d613fd2013-10-15 15:39:04 -070015#ifndef NDNBOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
16#define NDNBOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
Jeff Thompsonf7d49942013-08-01 16:47:40 -070017
Jeff Thompson2277ce52013-08-01 17:34:11 -070018#include <ndnboost/type_traits/config.hpp>
Jeff Thompsonf7d49942013-08-01 16:47:40 -070019
Jeff Thompson3d613fd2013-10-15 15:39:04 -070020#if defined(NDNBOOST_TT_PREPROCESSING_MODE)
Jeff Thompson2277ce52013-08-01 17:34:11 -070021# include <ndnboost/preprocessor/iterate.hpp>
22# include <ndnboost/preprocessor/enum_params.hpp>
23# include <ndnboost/preprocessor/comma_if.hpp>
Jeff Thompsonf7d49942013-08-01 16:47:40 -070024#endif
25
26namespace ndnboost {
27namespace type_traits {
28
29template <class R>
30struct is_function_ptr_helper
31{
Jeff Thompson3d613fd2013-10-15 15:39:04 -070032 NDNBOOST_STATIC_CONSTANT(bool, value = false);
Jeff Thompsonf7d49942013-08-01 16:47:40 -070033};
34
Jeff Thompson3d613fd2013-10-15 15:39:04 -070035#if !defined(NDNBOOST_TT_PREPROCESSING_MODE)
Jeff Thompsonf7d49942013-08-01 16:47:40 -070036// preprocessor-generated part, don't edit by hand!
37
38template <class R >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070039struct is_function_ptr_helper<R (*)()> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
40#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070041template <class R >
Jeff Thompson3d613fd2013-10-15 15:39:04 -070042struct is_function_ptr_helper<R (*)( ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070043#endif
44template <class R , class T0>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070045struct is_function_ptr_helper<R (*)( T0)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
46#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070047template <class R , class T0>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070048struct is_function_ptr_helper<R (*)( T0 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070049#endif
50template <class R , class T0 , class T1>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070051struct is_function_ptr_helper<R (*)( T0 , T1)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
52#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070053template <class R , class T0 , class T1>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070054struct is_function_ptr_helper<R (*)( T0 , T1 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070055#endif
56template <class R , class T0 , class T1 , class T2>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070057struct is_function_ptr_helper<R (*)( T0 , T1 , T2)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
58#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070059template <class R , class T0 , class T1 , class T2>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070060struct is_function_ptr_helper<R (*)( T0 , T1 , T2 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070061#endif
62template <class R , class T0 , class T1 , class T2 , class T3>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070063struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
64#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070065template <class R , class T0 , class T1 , class T2 , class T3>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070066struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070067#endif
68template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070069struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
70#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070071template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070072struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070073#endif
74template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070075struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
76#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070077template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070078struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070079#endif
80template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070081struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
82#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070083template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070084struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070085#endif
86template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070087struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
88#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070089template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070090struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070091#endif
92template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070093struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
94#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -070095template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070096struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -070097#endif
98template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
Jeff Thompson3d613fd2013-10-15 15:39:04 -070099struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
100#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700101template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700102struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700103#endif
104template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700105struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
106#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700107template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700108struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700109#endif
110template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700111struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
112#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700113template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700114struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700115#endif
116template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700117struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
118#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700119template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700120struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700121#endif
122template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700123struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
124#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700125template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700126struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700127#endif
128template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700129struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
130#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700131template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700132struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700133#endif
134template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700135struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
136#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700137template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700138struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700139#endif
140template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700141struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
142#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700143template <class R , class T0 , 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>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700144struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700145#endif
146template <class R , class T0 , 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 , class T17>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700147struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
148#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700149template <class R , class T0 , 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 , class T17>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700150struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700151#endif
152template <class R , class T0 , 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 , class T17 , class T18>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700153struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
154#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700155template <class R , class T0 , 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 , class T17 , class T18>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700156struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700157#endif
158template <class R , class T0 , 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 , class T17 , class T18 , class T19>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700159struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
160#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700161template <class R , class T0 , 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 , class T17 , class T18 , class T19>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700162struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700163#endif
164template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700165struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
166#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700167template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700168struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700169#endif
170template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700171struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
172#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700173template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700174struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700175#endif
176template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700177struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
178#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700179template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700180struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700181#endif
182template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700183struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
184#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700185template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700186struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700187#endif
188template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700189struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
190#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700191template <class R , class T0 , 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 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700192struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700193#endif
194#else
195
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700196#undef NDNBOOST_STATIC_CONSTANT
197#define NDNBOOST_PP_ITERATION_PARAMS_1 \
Jeff Thompson2277ce52013-08-01 17:34:11 -0700198 (3, (0, 25, "ndnboost/type_traits/detail/is_function_ptr_helper.hpp"))
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700199#include NDNBOOST_PP_ITERATE()
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700200
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700201#endif // NDNBOOST_TT_PREPROCESSING_MODE
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700202
203} // namespace type_traits
204} // namespace ndnboost
205
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700206#endif // NDNBOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700207
208///// iteration
209
210#else
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700211#define NDNBOOST_PP_COUNTER NDNBOOST_PP_FRAME_ITERATION(1)
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700212
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700213template <class R NDNBOOST_PP_COMMA_IF(NDNBOOST_PP_COUNTER) NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_COUNTER,class T)>
214struct is_function_ptr_helper<R (*)(NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_COUNTER,T))> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
215@#ifndef NDNBOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
216template <class R NDNBOOST_PP_COMMA_IF(NDNBOOST_PP_COUNTER) NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_COUNTER,class T)>
217struct is_function_ptr_helper<R (*)(NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_COUNTER,T) ...)> { NDNBOOST_STATIC_CONSTANT(bool, value = true); };
Jeff Thompsonf7d49942013-08-01 16:47:40 -0700218@#endif
Jeff Thompson3d613fd2013-10-15 15:39:04 -0700219#undef NDNBOOST_PP_COUNTER
220#endif // NDNBOOST_PP_IS_ITERATING