2 // (C) Copyright Tobias Schwinger
4 // Use modification and distribution are subject to the boost Software License,
5 // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
7 //------------------------------------------------------------------------------
9 // no include guards, this file is intended for multiple inclusion
11 // input: BOOST_FT_syntax type macro to use
12 // input: BOOST_FT_cc empty or cc specifier
13 // input: BOOST_FT_ell empty or "..."
14 // input: BOOST_FT_cv empty or cv qualifiers
15 // input: BOOST_FT_flags single decimal integer encoding the flags
16 // output: BOOST_FT_n number of component types (arity+1)
17 // output: BOOST_FT_arity current arity
18 // output: BOOST_FT_type macro that expands to the type
19 // output: BOOST_FT_tplargs(p) template arguments with given prefix
20 // output: BOOST_FT_params(p) parameters with given prefix
22 # include <boost/function_types/detail/components_impl/arity10_1.hpp>
23 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename L
>
24 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10 BOOST_FT_ell
) BOOST_FT_cv
, L
>
26 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
27 typedef constant
<BOOST_FT_full_mask
> mask
;
28 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
29 typedef components_mpl_sequence_tag tag
;
30 typedef mpl::integral_c
<std::size_t,11> function_arity
;
31 typedef mpl::vector12
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
> types
;
33 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename L
>
34 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11 BOOST_FT_ell
) BOOST_FT_cv
, L
>
36 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
37 typedef constant
<BOOST_FT_full_mask
> mask
;
38 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
39 typedef components_mpl_sequence_tag tag
;
40 typedef mpl::integral_c
<std::size_t,12> function_arity
;
41 typedef mpl::vector13
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
> types
;
43 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename L
>
44 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12 BOOST_FT_ell
) BOOST_FT_cv
, L
>
46 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
47 typedef constant
<BOOST_FT_full_mask
> mask
;
48 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
49 typedef components_mpl_sequence_tag tag
;
50 typedef mpl::integral_c
<std::size_t,13> function_arity
;
51 typedef mpl::vector14
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
> types
;
53 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename L
>
54 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13 BOOST_FT_ell
) BOOST_FT_cv
, L
>
56 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
57 typedef constant
<BOOST_FT_full_mask
> mask
;
58 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
59 typedef components_mpl_sequence_tag tag
;
60 typedef mpl::integral_c
<std::size_t,14> function_arity
;
61 typedef mpl::vector15
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
> types
;
63 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename T14
, typename L
>
64 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14 BOOST_FT_ell
) BOOST_FT_cv
, L
>
66 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
67 typedef constant
<BOOST_FT_full_mask
> mask
;
68 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
69 typedef components_mpl_sequence_tag tag
;
70 typedef mpl::integral_c
<std::size_t,15> function_arity
;
71 typedef mpl::vector16
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
> types
;
73 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename T14
, typename T15
, typename L
>
74 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15 BOOST_FT_ell
) BOOST_FT_cv
, L
>
76 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
77 typedef constant
<BOOST_FT_full_mask
> mask
;
78 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
79 typedef components_mpl_sequence_tag tag
;
80 typedef mpl::integral_c
<std::size_t,16> function_arity
;
81 typedef mpl::vector17
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
> types
;
83 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename T14
, typename T15
, typename T16
, typename L
>
84 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16 BOOST_FT_ell
) BOOST_FT_cv
, L
>
86 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
87 typedef constant
<BOOST_FT_full_mask
> mask
;
88 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
89 typedef components_mpl_sequence_tag tag
;
90 typedef mpl::integral_c
<std::size_t,17> function_arity
;
91 typedef mpl::vector18
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
> types
;
93 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename T14
, typename T15
, typename T16
, typename T17
, typename L
>
94 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17 BOOST_FT_ell
) BOOST_FT_cv
, L
>
96 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
97 typedef constant
<BOOST_FT_full_mask
> mask
;
98 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
99 typedef components_mpl_sequence_tag tag
;
100 typedef mpl::integral_c
<std::size_t,18> function_arity
;
101 typedef mpl::vector19
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
> types
;
103 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename T14
, typename T15
, typename T16
, typename T17
, typename T18
, typename L
>
104 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
, T18 BOOST_FT_ell
) BOOST_FT_cv
, L
>
106 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
107 typedef constant
<BOOST_FT_full_mask
> mask
;
108 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
, T18 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
109 typedef components_mpl_sequence_tag tag
;
110 typedef mpl::integral_c
<std::size_t,19> function_arity
;
111 typedef mpl::vector20
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
, T18
> types
;
113 template< typename R
, typename T0
, typename T1
, typename T2
, typename T3
, typename T4
, typename T5
, typename T6
, typename T7
, typename T8
, typename T9
, typename T10
, typename T11
, typename T12
, typename T13
, typename T14
, typename T15
, typename T16
, typename T17
, typename T18
, typename T19
, typename L
>
114 struct components_impl
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
, T18
, T19 BOOST_FT_ell
) BOOST_FT_cv
, L
>
116 typedef encode_bits
<BOOST_FT_flags
,BOOST_FT_cc_id
> bits
;
117 typedef constant
<BOOST_FT_full_mask
> mask
;
118 typedef function_types::components
<BOOST_FT_syntax(BOOST_FT_cc
, BOOST_PP_EMPTY
) (T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
, T18
, T19 BOOST_FT_ell
) BOOST_FT_cv
, L
> type
;
119 typedef components_mpl_sequence_tag tag
;
120 typedef mpl::integral_c
<std::size_t,20> function_arity
;
121 typedef mpl::vector21
< R
, typename class_transform
<T0 BOOST_FT_cv
, L
> ::type
, T1
, T2
, T3
, T4
, T5
, T6
, T7
, T8
, T9
, T10
, T11
, T12
, T13
, T14
, T15
, T16
, T17
, T18
, T19
> types
;