Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 1 | |
| 2 | // (C) Copyright Tobias Schwinger |
| 3 | // |
| 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). |
| 6 | |
| 7 | //------------------------------------------------------------------------------ |
| 8 | |
| 9 | // no include guards, this file is intended for multiple inclusion |
| 10 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 11 | // input: NDNBOOST_FT_syntax type macro to use |
| 12 | // input: NDNBOOST_FT_cc empty or cc specifier |
| 13 | // input: NDNBOOST_FT_ell empty or "..." |
| 14 | // input: NDNBOOST_FT_cv empty or cv qualifiers |
| 15 | // input: NDNBOOST_FT_flags single decimal integer encoding the flags |
| 16 | // output: NDNBOOST_FT_n number of component types (arity+1) |
| 17 | // output: NDNBOOST_FT_arity current arity |
| 18 | // output: NDNBOOST_FT_type macro that expands to the type |
| 19 | // output: NDNBOOST_FT_tplargs(p) template arguments with given prefix |
| 20 | // output: NDNBOOST_FT_params(p) parameters with given prefix |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 21 | |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 22 | # define NDNBOOST_FT_make_type(flags,cc,arity) NDNBOOST_FT_make_type_impl(flags,cc,arity) |
| 23 | # define NDNBOOST_FT_make_type_impl(flags,cc,arity) make_type_ ## flags ## _ ## cc ## _ ## arity |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 24 | template< typename R , typename T0 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 25 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 26 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 27 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) ( NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 28 | }; |
| 29 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 30 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 2 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 31 | { |
| 32 | template<typename S> struct synthesize_impl_i |
| 33 | { |
| 34 | private: |
| 35 | typedef typename mpl::begin<S> ::type iter_0; |
| 36 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 37 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 38 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,1) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 39 | < typename mpl::deref< iter_0 > ::type |
| 40 | , typename detail::cv_traits< |
| 41 | typename mpl::deref< iter_1 > ::type > ::type |
| 42 | > ::type type; |
| 43 | }; |
| 44 | }; |
| 45 | template< typename R , typename T0 , typename T1 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 46 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 47 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 48 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 49 | }; |
| 50 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 51 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 3 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 52 | { |
| 53 | template<typename S> struct synthesize_impl_i |
| 54 | { |
| 55 | private: |
| 56 | typedef typename mpl::begin<S> ::type iter_0; |
| 57 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 58 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 59 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 60 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,2) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 61 | < typename mpl::deref< iter_0 > ::type |
| 62 | , typename detail::cv_traits< |
| 63 | typename mpl::deref< iter_1 > ::type > ::type |
| 64 | , typename mpl::deref< iter_2 > ::type |
| 65 | > ::type type; |
| 66 | }; |
| 67 | }; |
| 68 | template< typename R , typename T0 , typename T1 , typename T2 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 69 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 70 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 71 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 72 | }; |
| 73 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 74 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 4 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 75 | { |
| 76 | template<typename S> struct synthesize_impl_i |
| 77 | { |
| 78 | private: |
| 79 | typedef typename mpl::begin<S> ::type iter_0; |
| 80 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 81 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 82 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 83 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 84 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,3) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 85 | < typename mpl::deref< iter_0 > ::type |
| 86 | , typename detail::cv_traits< |
| 87 | typename mpl::deref< iter_1 > ::type > ::type |
| 88 | , typename mpl::deref< iter_2 > ::type |
| 89 | , typename mpl::deref< iter_3 > ::type |
| 90 | > ::type type; |
| 91 | }; |
| 92 | }; |
| 93 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 94 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 95 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 96 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 97 | }; |
| 98 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 99 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 5 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 100 | { |
| 101 | template<typename S> struct synthesize_impl_i |
| 102 | { |
| 103 | private: |
| 104 | typedef typename mpl::begin<S> ::type iter_0; |
| 105 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 106 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 107 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 108 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 109 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 110 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,4) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 111 | < typename mpl::deref< iter_0 > ::type |
| 112 | , typename detail::cv_traits< |
| 113 | typename mpl::deref< iter_1 > ::type > ::type |
| 114 | , typename mpl::deref< iter_2 > ::type |
| 115 | , typename mpl::deref< iter_3 > ::type |
| 116 | , typename mpl::deref< iter_4 > ::type |
| 117 | > ::type type; |
| 118 | }; |
| 119 | }; |
| 120 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 121 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 122 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 123 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 , T4 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 124 | }; |
| 125 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 126 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 6 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 127 | { |
| 128 | template<typename S> struct synthesize_impl_i |
| 129 | { |
| 130 | private: |
| 131 | typedef typename mpl::begin<S> ::type iter_0; |
| 132 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 133 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 134 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 135 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 136 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 137 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 138 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,5) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 139 | < typename mpl::deref< iter_0 > ::type |
| 140 | , typename detail::cv_traits< |
| 141 | typename mpl::deref< iter_1 > ::type > ::type |
| 142 | , typename mpl::deref< iter_2 > ::type |
| 143 | , typename mpl::deref< iter_3 > ::type |
| 144 | , typename mpl::deref< iter_4 > ::type |
| 145 | , typename mpl::deref< iter_5 > ::type |
| 146 | > ::type type; |
| 147 | }; |
| 148 | }; |
| 149 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 150 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 151 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 152 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 153 | }; |
| 154 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 155 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 7 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 156 | { |
| 157 | template<typename S> struct synthesize_impl_i |
| 158 | { |
| 159 | private: |
| 160 | typedef typename mpl::begin<S> ::type iter_0; |
| 161 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 162 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 163 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 164 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 165 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 166 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 167 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 168 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,6) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 169 | < typename mpl::deref< iter_0 > ::type |
| 170 | , typename detail::cv_traits< |
| 171 | typename mpl::deref< iter_1 > ::type > ::type |
| 172 | , typename mpl::deref< iter_2 > ::type |
| 173 | , typename mpl::deref< iter_3 > ::type |
| 174 | , typename mpl::deref< iter_4 > ::type |
| 175 | , typename mpl::deref< iter_5 > ::type |
| 176 | , typename mpl::deref< iter_6 > ::type |
| 177 | > ::type type; |
| 178 | }; |
| 179 | }; |
| 180 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 181 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 182 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 183 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 184 | }; |
| 185 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 186 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 8 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 187 | { |
| 188 | template<typename S> struct synthesize_impl_i |
| 189 | { |
| 190 | private: |
| 191 | typedef typename mpl::begin<S> ::type iter_0; |
| 192 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 193 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 194 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 195 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 196 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 197 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 198 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 199 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 200 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,7) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 201 | < typename mpl::deref< iter_0 > ::type |
| 202 | , typename detail::cv_traits< |
| 203 | typename mpl::deref< iter_1 > ::type > ::type |
| 204 | , typename mpl::deref< iter_2 > ::type |
| 205 | , typename mpl::deref< iter_3 > ::type |
| 206 | , typename mpl::deref< iter_4 > ::type |
| 207 | , typename mpl::deref< iter_5 > ::type |
| 208 | , typename mpl::deref< iter_6 > ::type |
| 209 | , typename mpl::deref< iter_7 > ::type |
| 210 | > ::type type; |
| 211 | }; |
| 212 | }; |
| 213 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 214 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 215 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 216 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 217 | }; |
| 218 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 219 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 9 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 220 | { |
| 221 | template<typename S> struct synthesize_impl_i |
| 222 | { |
| 223 | private: |
| 224 | typedef typename mpl::begin<S> ::type iter_0; |
| 225 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 226 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 227 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 228 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 229 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 230 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 231 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 232 | typedef typename mpl::next< iter_7 > ::type iter_8; |
| 233 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 234 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,8) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 235 | < typename mpl::deref< iter_0 > ::type |
| 236 | , typename detail::cv_traits< |
| 237 | typename mpl::deref< iter_1 > ::type > ::type |
| 238 | , typename mpl::deref< iter_2 > ::type |
| 239 | , typename mpl::deref< iter_3 > ::type |
| 240 | , typename mpl::deref< iter_4 > ::type |
| 241 | , typename mpl::deref< iter_5 > ::type |
| 242 | , typename mpl::deref< iter_6 > ::type |
| 243 | , typename mpl::deref< iter_7 > ::type |
| 244 | , typename mpl::deref< iter_8 > ::type |
| 245 | > ::type type; |
| 246 | }; |
| 247 | }; |
| 248 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 249 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 250 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 251 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 252 | }; |
| 253 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 254 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 10 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 255 | { |
| 256 | template<typename S> struct synthesize_impl_i |
| 257 | { |
| 258 | private: |
| 259 | typedef typename mpl::begin<S> ::type iter_0; |
| 260 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 261 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 262 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 263 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 264 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 265 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 266 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 267 | typedef typename mpl::next< iter_7 > ::type iter_8; |
| 268 | typedef typename mpl::next< iter_8 > ::type iter_9; |
| 269 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 270 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,9) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 271 | < typename mpl::deref< iter_0 > ::type |
| 272 | , typename detail::cv_traits< |
| 273 | typename mpl::deref< iter_1 > ::type > ::type |
| 274 | , typename mpl::deref< iter_2 > ::type |
| 275 | , typename mpl::deref< iter_3 > ::type |
| 276 | , typename mpl::deref< iter_4 > ::type |
| 277 | , typename mpl::deref< iter_5 > ::type |
| 278 | , typename mpl::deref< iter_6 > ::type |
| 279 | , typename mpl::deref< iter_7 > ::type |
| 280 | , typename mpl::deref< iter_8 > ::type |
| 281 | , typename mpl::deref< iter_9 > ::type |
| 282 | > ::type type; |
| 283 | }; |
| 284 | }; |
| 285 | template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 286 | struct NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 287 | { |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 288 | typedef NDNBOOST_FT_syntax(NDNBOOST_FT_cc,type NDNBOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 NDNBOOST_FT_ell) NDNBOOST_FT_cv ; |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 289 | }; |
| 290 | template< > |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 291 | struct synthesize_impl_o< NDNBOOST_FT_flags, NDNBOOST_FT_cc_id, 11 > |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 292 | { |
| 293 | template<typename S> struct synthesize_impl_i |
| 294 | { |
| 295 | private: |
| 296 | typedef typename mpl::begin<S> ::type iter_0; |
| 297 | typedef typename mpl::next< iter_0 > ::type iter_1; |
| 298 | typedef typename mpl::next< iter_1 > ::type iter_2; |
| 299 | typedef typename mpl::next< iter_2 > ::type iter_3; |
| 300 | typedef typename mpl::next< iter_3 > ::type iter_4; |
| 301 | typedef typename mpl::next< iter_4 > ::type iter_5; |
| 302 | typedef typename mpl::next< iter_5 > ::type iter_6; |
| 303 | typedef typename mpl::next< iter_6 > ::type iter_7; |
| 304 | typedef typename mpl::next< iter_7 > ::type iter_8; |
| 305 | typedef typename mpl::next< iter_8 > ::type iter_9; |
| 306 | typedef typename mpl::next< iter_9 > ::type iter_10; |
| 307 | public: |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 308 | typedef typename detail::NDNBOOST_FT_make_type(NDNBOOST_FT_flags,NDNBOOST_FT_cc_id,10) |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 309 | < typename mpl::deref< iter_0 > ::type |
| 310 | , typename detail::cv_traits< |
| 311 | typename mpl::deref< iter_1 > ::type > ::type |
| 312 | , typename mpl::deref< iter_2 > ::type |
| 313 | , typename mpl::deref< iter_3 > ::type |
| 314 | , typename mpl::deref< iter_4 > ::type |
| 315 | , typename mpl::deref< iter_5 > ::type |
| 316 | , typename mpl::deref< iter_6 > ::type |
| 317 | , typename mpl::deref< iter_7 > ::type |
| 318 | , typename mpl::deref< iter_8 > ::type |
| 319 | , typename mpl::deref< iter_9 > ::type |
| 320 | , typename mpl::deref< iter_10 > ::type |
| 321 | > ::type type; |
| 322 | }; |
| 323 | }; |
Jeff Thompson | 3d613fd | 2013-10-15 15:39:04 -0700 | [diff] [blame^] | 324 | # undef NDNBOOST_FT_make_type |
| 325 | # undef NDNBOOST_FT_make_type_impl |
Jeff Thompson | a28eed8 | 2013-08-22 16:21:10 -0700 | [diff] [blame] | 326 | |