arity20_1.hpp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. // (C) Copyright Tobias Schwinger
  2. //
  3. // Use modification and distribution are subject to the boost Software License,
  4. // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
  5. //------------------------------------------------------------------------------
  6. // no include guards, this file is intended for multiple inclusion
  7. // input: BOOST_FT_syntax type macro to use
  8. // input: BOOST_FT_cc empty or cc specifier
  9. // input: BOOST_FT_ell empty or "..."
  10. // input: BOOST_FT_cv empty or cv qualifiers
  11. // input: BOOST_FT_flags single decimal integer encoding the flags
  12. // output: BOOST_FT_n number of component types (arity+1)
  13. // output: BOOST_FT_arity current arity
  14. // output: BOOST_FT_type macro that expands to the type
  15. // output: BOOST_FT_tplargs(p) template arguments with given prefix
  16. // output: BOOST_FT_params(p) parameters with given prefix
  17. # include <boost/function_types/detail/synthesize_impl/arity10_1.hpp>
  18. # define BOOST_FT_make_type(flags,cc,arity) BOOST_FT_make_type_impl(flags,cc,arity)
  19. # define BOOST_FT_make_type_impl(flags,cc,arity) make_type_ ## flags ## _ ## cc ## _ ## arity
  20. 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 >
  21. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,11)
  22. {
  23. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 BOOST_FT_ell) BOOST_FT_cv ;
  24. };
  25. template< >
  26. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 12 >
  27. {
  28. template<typename S> struct synthesize_impl_i
  29. {
  30. private:
  31. typedef typename mpl::begin<S> ::type iter_0;
  32. typedef typename mpl::next< iter_0 > ::type iter_1;
  33. typedef typename mpl::next< iter_1 > ::type iter_2;
  34. typedef typename mpl::next< iter_2 > ::type iter_3;
  35. typedef typename mpl::next< iter_3 > ::type iter_4;
  36. typedef typename mpl::next< iter_4 > ::type iter_5;
  37. typedef typename mpl::next< iter_5 > ::type iter_6;
  38. typedef typename mpl::next< iter_6 > ::type iter_7;
  39. typedef typename mpl::next< iter_7 > ::type iter_8;
  40. typedef typename mpl::next< iter_8 > ::type iter_9;
  41. typedef typename mpl::next< iter_9 > ::type iter_10;
  42. typedef typename mpl::next< iter_10 > ::type iter_11;
  43. public:
  44. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,11)
  45. < typename mpl::deref< iter_0 > ::type
  46. , typename detail::cv_traits<
  47. typename mpl::deref< iter_1 > ::type > ::type
  48. , typename mpl::deref< iter_2 > ::type
  49. , typename mpl::deref< iter_3 > ::type
  50. , typename mpl::deref< iter_4 > ::type
  51. , typename mpl::deref< iter_5 > ::type
  52. , typename mpl::deref< iter_6 > ::type
  53. , typename mpl::deref< iter_7 > ::type
  54. , typename mpl::deref< iter_8 > ::type
  55. , typename mpl::deref< iter_9 > ::type
  56. , typename mpl::deref< iter_10 > ::type
  57. , typename mpl::deref< iter_11 > ::type
  58. > ::type type;
  59. };
  60. };
  61. 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 >
  62. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,12)
  63. {
  64. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 BOOST_FT_ell) BOOST_FT_cv ;
  65. };
  66. template< >
  67. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 13 >
  68. {
  69. template<typename S> struct synthesize_impl_i
  70. {
  71. private:
  72. typedef typename mpl::begin<S> ::type iter_0;
  73. typedef typename mpl::next< iter_0 > ::type iter_1;
  74. typedef typename mpl::next< iter_1 > ::type iter_2;
  75. typedef typename mpl::next< iter_2 > ::type iter_3;
  76. typedef typename mpl::next< iter_3 > ::type iter_4;
  77. typedef typename mpl::next< iter_4 > ::type iter_5;
  78. typedef typename mpl::next< iter_5 > ::type iter_6;
  79. typedef typename mpl::next< iter_6 > ::type iter_7;
  80. typedef typename mpl::next< iter_7 > ::type iter_8;
  81. typedef typename mpl::next< iter_8 > ::type iter_9;
  82. typedef typename mpl::next< iter_9 > ::type iter_10;
  83. typedef typename mpl::next< iter_10 > ::type iter_11;
  84. typedef typename mpl::next< iter_11 > ::type iter_12;
  85. public:
  86. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,12)
  87. < typename mpl::deref< iter_0 > ::type
  88. , typename detail::cv_traits<
  89. typename mpl::deref< iter_1 > ::type > ::type
  90. , typename mpl::deref< iter_2 > ::type
  91. , typename mpl::deref< iter_3 > ::type
  92. , typename mpl::deref< iter_4 > ::type
  93. , typename mpl::deref< iter_5 > ::type
  94. , typename mpl::deref< iter_6 > ::type
  95. , typename mpl::deref< iter_7 > ::type
  96. , typename mpl::deref< iter_8 > ::type
  97. , typename mpl::deref< iter_9 > ::type
  98. , typename mpl::deref< iter_10 > ::type
  99. , typename mpl::deref< iter_11 > ::type
  100. , typename mpl::deref< iter_12 > ::type
  101. > ::type type;
  102. };
  103. };
  104. 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 >
  105. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,13)
  106. {
  107. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 BOOST_FT_ell) BOOST_FT_cv ;
  108. };
  109. template< >
  110. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 14 >
  111. {
  112. template<typename S> struct synthesize_impl_i
  113. {
  114. private:
  115. typedef typename mpl::begin<S> ::type iter_0;
  116. typedef typename mpl::next< iter_0 > ::type iter_1;
  117. typedef typename mpl::next< iter_1 > ::type iter_2;
  118. typedef typename mpl::next< iter_2 > ::type iter_3;
  119. typedef typename mpl::next< iter_3 > ::type iter_4;
  120. typedef typename mpl::next< iter_4 > ::type iter_5;
  121. typedef typename mpl::next< iter_5 > ::type iter_6;
  122. typedef typename mpl::next< iter_6 > ::type iter_7;
  123. typedef typename mpl::next< iter_7 > ::type iter_8;
  124. typedef typename mpl::next< iter_8 > ::type iter_9;
  125. typedef typename mpl::next< iter_9 > ::type iter_10;
  126. typedef typename mpl::next< iter_10 > ::type iter_11;
  127. typedef typename mpl::next< iter_11 > ::type iter_12;
  128. typedef typename mpl::next< iter_12 > ::type iter_13;
  129. public:
  130. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,13)
  131. < typename mpl::deref< iter_0 > ::type
  132. , typename detail::cv_traits<
  133. typename mpl::deref< iter_1 > ::type > ::type
  134. , typename mpl::deref< iter_2 > ::type
  135. , typename mpl::deref< iter_3 > ::type
  136. , typename mpl::deref< iter_4 > ::type
  137. , typename mpl::deref< iter_5 > ::type
  138. , typename mpl::deref< iter_6 > ::type
  139. , typename mpl::deref< iter_7 > ::type
  140. , typename mpl::deref< iter_8 > ::type
  141. , typename mpl::deref< iter_9 > ::type
  142. , typename mpl::deref< iter_10 > ::type
  143. , typename mpl::deref< iter_11 > ::type
  144. , typename mpl::deref< iter_12 > ::type
  145. , typename mpl::deref< iter_13 > ::type
  146. > ::type type;
  147. };
  148. };
  149. 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 >
  150. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,14)
  151. {
  152. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 BOOST_FT_ell) BOOST_FT_cv ;
  153. };
  154. template< >
  155. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 15 >
  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. typedef typename mpl::next< iter_6 > ::type iter_7;
  168. typedef typename mpl::next< iter_7 > ::type iter_8;
  169. typedef typename mpl::next< iter_8 > ::type iter_9;
  170. typedef typename mpl::next< iter_9 > ::type iter_10;
  171. typedef typename mpl::next< iter_10 > ::type iter_11;
  172. typedef typename mpl::next< iter_11 > ::type iter_12;
  173. typedef typename mpl::next< iter_12 > ::type iter_13;
  174. typedef typename mpl::next< iter_13 > ::type iter_14;
  175. public:
  176. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,14)
  177. < typename mpl::deref< iter_0 > ::type
  178. , typename detail::cv_traits<
  179. typename mpl::deref< iter_1 > ::type > ::type
  180. , typename mpl::deref< iter_2 > ::type
  181. , typename mpl::deref< iter_3 > ::type
  182. , typename mpl::deref< iter_4 > ::type
  183. , typename mpl::deref< iter_5 > ::type
  184. , typename mpl::deref< iter_6 > ::type
  185. , typename mpl::deref< iter_7 > ::type
  186. , typename mpl::deref< iter_8 > ::type
  187. , typename mpl::deref< iter_9 > ::type
  188. , typename mpl::deref< iter_10 > ::type
  189. , typename mpl::deref< iter_11 > ::type
  190. , typename mpl::deref< iter_12 > ::type
  191. , typename mpl::deref< iter_13 > ::type
  192. , typename mpl::deref< iter_14 > ::type
  193. > ::type type;
  194. };
  195. };
  196. 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 >
  197. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,15)
  198. {
  199. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 BOOST_FT_ell) BOOST_FT_cv ;
  200. };
  201. template< >
  202. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 16 >
  203. {
  204. template<typename S> struct synthesize_impl_i
  205. {
  206. private:
  207. typedef typename mpl::begin<S> ::type iter_0;
  208. typedef typename mpl::next< iter_0 > ::type iter_1;
  209. typedef typename mpl::next< iter_1 > ::type iter_2;
  210. typedef typename mpl::next< iter_2 > ::type iter_3;
  211. typedef typename mpl::next< iter_3 > ::type iter_4;
  212. typedef typename mpl::next< iter_4 > ::type iter_5;
  213. typedef typename mpl::next< iter_5 > ::type iter_6;
  214. typedef typename mpl::next< iter_6 > ::type iter_7;
  215. typedef typename mpl::next< iter_7 > ::type iter_8;
  216. typedef typename mpl::next< iter_8 > ::type iter_9;
  217. typedef typename mpl::next< iter_9 > ::type iter_10;
  218. typedef typename mpl::next< iter_10 > ::type iter_11;
  219. typedef typename mpl::next< iter_11 > ::type iter_12;
  220. typedef typename mpl::next< iter_12 > ::type iter_13;
  221. typedef typename mpl::next< iter_13 > ::type iter_14;
  222. typedef typename mpl::next< iter_14 > ::type iter_15;
  223. public:
  224. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,15)
  225. < typename mpl::deref< iter_0 > ::type
  226. , typename detail::cv_traits<
  227. typename mpl::deref< iter_1 > ::type > ::type
  228. , typename mpl::deref< iter_2 > ::type
  229. , typename mpl::deref< iter_3 > ::type
  230. , typename mpl::deref< iter_4 > ::type
  231. , typename mpl::deref< iter_5 > ::type
  232. , typename mpl::deref< iter_6 > ::type
  233. , typename mpl::deref< iter_7 > ::type
  234. , typename mpl::deref< iter_8 > ::type
  235. , typename mpl::deref< iter_9 > ::type
  236. , typename mpl::deref< iter_10 > ::type
  237. , typename mpl::deref< iter_11 > ::type
  238. , typename mpl::deref< iter_12 > ::type
  239. , typename mpl::deref< iter_13 > ::type
  240. , typename mpl::deref< iter_14 > ::type
  241. , typename mpl::deref< iter_15 > ::type
  242. > ::type type;
  243. };
  244. };
  245. 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 >
  246. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,16)
  247. {
  248. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 BOOST_FT_ell) BOOST_FT_cv ;
  249. };
  250. template< >
  251. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 17 >
  252. {
  253. template<typename S> struct synthesize_impl_i
  254. {
  255. private:
  256. typedef typename mpl::begin<S> ::type iter_0;
  257. typedef typename mpl::next< iter_0 > ::type iter_1;
  258. typedef typename mpl::next< iter_1 > ::type iter_2;
  259. typedef typename mpl::next< iter_2 > ::type iter_3;
  260. typedef typename mpl::next< iter_3 > ::type iter_4;
  261. typedef typename mpl::next< iter_4 > ::type iter_5;
  262. typedef typename mpl::next< iter_5 > ::type iter_6;
  263. typedef typename mpl::next< iter_6 > ::type iter_7;
  264. typedef typename mpl::next< iter_7 > ::type iter_8;
  265. typedef typename mpl::next< iter_8 > ::type iter_9;
  266. typedef typename mpl::next< iter_9 > ::type iter_10;
  267. typedef typename mpl::next< iter_10 > ::type iter_11;
  268. typedef typename mpl::next< iter_11 > ::type iter_12;
  269. typedef typename mpl::next< iter_12 > ::type iter_13;
  270. typedef typename mpl::next< iter_13 > ::type iter_14;
  271. typedef typename mpl::next< iter_14 > ::type iter_15;
  272. typedef typename mpl::next< iter_15 > ::type iter_16;
  273. public:
  274. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,16)
  275. < typename mpl::deref< iter_0 > ::type
  276. , typename detail::cv_traits<
  277. typename mpl::deref< iter_1 > ::type > ::type
  278. , typename mpl::deref< iter_2 > ::type
  279. , typename mpl::deref< iter_3 > ::type
  280. , typename mpl::deref< iter_4 > ::type
  281. , typename mpl::deref< iter_5 > ::type
  282. , typename mpl::deref< iter_6 > ::type
  283. , typename mpl::deref< iter_7 > ::type
  284. , typename mpl::deref< iter_8 > ::type
  285. , typename mpl::deref< iter_9 > ::type
  286. , typename mpl::deref< iter_10 > ::type
  287. , typename mpl::deref< iter_11 > ::type
  288. , typename mpl::deref< iter_12 > ::type
  289. , typename mpl::deref< iter_13 > ::type
  290. , typename mpl::deref< iter_14 > ::type
  291. , typename mpl::deref< iter_15 > ::type
  292. , typename mpl::deref< iter_16 > ::type
  293. > ::type type;
  294. };
  295. };
  296. 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 >
  297. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,17)
  298. {
  299. typedef BOOST_FT_syntax(BOOST_FT_cc,type 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 ;
  300. };
  301. template< >
  302. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 18 >
  303. {
  304. template<typename S> struct synthesize_impl_i
  305. {
  306. private:
  307. typedef typename mpl::begin<S> ::type iter_0;
  308. typedef typename mpl::next< iter_0 > ::type iter_1;
  309. typedef typename mpl::next< iter_1 > ::type iter_2;
  310. typedef typename mpl::next< iter_2 > ::type iter_3;
  311. typedef typename mpl::next< iter_3 > ::type iter_4;
  312. typedef typename mpl::next< iter_4 > ::type iter_5;
  313. typedef typename mpl::next< iter_5 > ::type iter_6;
  314. typedef typename mpl::next< iter_6 > ::type iter_7;
  315. typedef typename mpl::next< iter_7 > ::type iter_8;
  316. typedef typename mpl::next< iter_8 > ::type iter_9;
  317. typedef typename mpl::next< iter_9 > ::type iter_10;
  318. typedef typename mpl::next< iter_10 > ::type iter_11;
  319. typedef typename mpl::next< iter_11 > ::type iter_12;
  320. typedef typename mpl::next< iter_12 > ::type iter_13;
  321. typedef typename mpl::next< iter_13 > ::type iter_14;
  322. typedef typename mpl::next< iter_14 > ::type iter_15;
  323. typedef typename mpl::next< iter_15 > ::type iter_16;
  324. typedef typename mpl::next< iter_16 > ::type iter_17;
  325. public:
  326. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,17)
  327. < typename mpl::deref< iter_0 > ::type
  328. , typename detail::cv_traits<
  329. typename mpl::deref< iter_1 > ::type > ::type
  330. , typename mpl::deref< iter_2 > ::type
  331. , typename mpl::deref< iter_3 > ::type
  332. , typename mpl::deref< iter_4 > ::type
  333. , typename mpl::deref< iter_5 > ::type
  334. , typename mpl::deref< iter_6 > ::type
  335. , typename mpl::deref< iter_7 > ::type
  336. , typename mpl::deref< iter_8 > ::type
  337. , typename mpl::deref< iter_9 > ::type
  338. , typename mpl::deref< iter_10 > ::type
  339. , typename mpl::deref< iter_11 > ::type
  340. , typename mpl::deref< iter_12 > ::type
  341. , typename mpl::deref< iter_13 > ::type
  342. , typename mpl::deref< iter_14 > ::type
  343. , typename mpl::deref< iter_15 > ::type
  344. , typename mpl::deref< iter_16 > ::type
  345. , typename mpl::deref< iter_17 > ::type
  346. > ::type type;
  347. };
  348. };
  349. 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 >
  350. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,18)
  351. {
  352. typedef BOOST_FT_syntax(BOOST_FT_cc,type 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 ;
  353. };
  354. template< >
  355. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 19 >
  356. {
  357. template<typename S> struct synthesize_impl_i
  358. {
  359. private:
  360. typedef typename mpl::begin<S> ::type iter_0;
  361. typedef typename mpl::next< iter_0 > ::type iter_1;
  362. typedef typename mpl::next< iter_1 > ::type iter_2;
  363. typedef typename mpl::next< iter_2 > ::type iter_3;
  364. typedef typename mpl::next< iter_3 > ::type iter_4;
  365. typedef typename mpl::next< iter_4 > ::type iter_5;
  366. typedef typename mpl::next< iter_5 > ::type iter_6;
  367. typedef typename mpl::next< iter_6 > ::type iter_7;
  368. typedef typename mpl::next< iter_7 > ::type iter_8;
  369. typedef typename mpl::next< iter_8 > ::type iter_9;
  370. typedef typename mpl::next< iter_9 > ::type iter_10;
  371. typedef typename mpl::next< iter_10 > ::type iter_11;
  372. typedef typename mpl::next< iter_11 > ::type iter_12;
  373. typedef typename mpl::next< iter_12 > ::type iter_13;
  374. typedef typename mpl::next< iter_13 > ::type iter_14;
  375. typedef typename mpl::next< iter_14 > ::type iter_15;
  376. typedef typename mpl::next< iter_15 > ::type iter_16;
  377. typedef typename mpl::next< iter_16 > ::type iter_17;
  378. typedef typename mpl::next< iter_17 > ::type iter_18;
  379. public:
  380. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,18)
  381. < typename mpl::deref< iter_0 > ::type
  382. , typename detail::cv_traits<
  383. typename mpl::deref< iter_1 > ::type > ::type
  384. , typename mpl::deref< iter_2 > ::type
  385. , typename mpl::deref< iter_3 > ::type
  386. , typename mpl::deref< iter_4 > ::type
  387. , typename mpl::deref< iter_5 > ::type
  388. , typename mpl::deref< iter_6 > ::type
  389. , typename mpl::deref< iter_7 > ::type
  390. , typename mpl::deref< iter_8 > ::type
  391. , typename mpl::deref< iter_9 > ::type
  392. , typename mpl::deref< iter_10 > ::type
  393. , typename mpl::deref< iter_11 > ::type
  394. , typename mpl::deref< iter_12 > ::type
  395. , typename mpl::deref< iter_13 > ::type
  396. , typename mpl::deref< iter_14 > ::type
  397. , typename mpl::deref< iter_15 > ::type
  398. , typename mpl::deref< iter_16 > ::type
  399. , typename mpl::deref< iter_17 > ::type
  400. , typename mpl::deref< iter_18 > ::type
  401. > ::type type;
  402. };
  403. };
  404. 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 >
  405. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,19)
  406. {
  407. typedef BOOST_FT_syntax(BOOST_FT_cc,type 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 ;
  408. };
  409. template< >
  410. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 20 >
  411. {
  412. template<typename S> struct synthesize_impl_i
  413. {
  414. private:
  415. typedef typename mpl::begin<S> ::type iter_0;
  416. typedef typename mpl::next< iter_0 > ::type iter_1;
  417. typedef typename mpl::next< iter_1 > ::type iter_2;
  418. typedef typename mpl::next< iter_2 > ::type iter_3;
  419. typedef typename mpl::next< iter_3 > ::type iter_4;
  420. typedef typename mpl::next< iter_4 > ::type iter_5;
  421. typedef typename mpl::next< iter_5 > ::type iter_6;
  422. typedef typename mpl::next< iter_6 > ::type iter_7;
  423. typedef typename mpl::next< iter_7 > ::type iter_8;
  424. typedef typename mpl::next< iter_8 > ::type iter_9;
  425. typedef typename mpl::next< iter_9 > ::type iter_10;
  426. typedef typename mpl::next< iter_10 > ::type iter_11;
  427. typedef typename mpl::next< iter_11 > ::type iter_12;
  428. typedef typename mpl::next< iter_12 > ::type iter_13;
  429. typedef typename mpl::next< iter_13 > ::type iter_14;
  430. typedef typename mpl::next< iter_14 > ::type iter_15;
  431. typedef typename mpl::next< iter_15 > ::type iter_16;
  432. typedef typename mpl::next< iter_16 > ::type iter_17;
  433. typedef typename mpl::next< iter_17 > ::type iter_18;
  434. typedef typename mpl::next< iter_18 > ::type iter_19;
  435. public:
  436. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,19)
  437. < typename mpl::deref< iter_0 > ::type
  438. , typename detail::cv_traits<
  439. typename mpl::deref< iter_1 > ::type > ::type
  440. , typename mpl::deref< iter_2 > ::type
  441. , typename mpl::deref< iter_3 > ::type
  442. , typename mpl::deref< iter_4 > ::type
  443. , typename mpl::deref< iter_5 > ::type
  444. , typename mpl::deref< iter_6 > ::type
  445. , typename mpl::deref< iter_7 > ::type
  446. , typename mpl::deref< iter_8 > ::type
  447. , typename mpl::deref< iter_9 > ::type
  448. , typename mpl::deref< iter_10 > ::type
  449. , typename mpl::deref< iter_11 > ::type
  450. , typename mpl::deref< iter_12 > ::type
  451. , typename mpl::deref< iter_13 > ::type
  452. , typename mpl::deref< iter_14 > ::type
  453. , typename mpl::deref< iter_15 > ::type
  454. , typename mpl::deref< iter_16 > ::type
  455. , typename mpl::deref< iter_17 > ::type
  456. , typename mpl::deref< iter_18 > ::type
  457. , typename mpl::deref< iter_19 > ::type
  458. > ::type type;
  459. };
  460. };
  461. 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 >
  462. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,20)
  463. {
  464. typedef BOOST_FT_syntax(BOOST_FT_cc,type 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 ;
  465. };
  466. template< >
  467. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 21 >
  468. {
  469. template<typename S> struct synthesize_impl_i
  470. {
  471. private:
  472. typedef typename mpl::begin<S> ::type iter_0;
  473. typedef typename mpl::next< iter_0 > ::type iter_1;
  474. typedef typename mpl::next< iter_1 > ::type iter_2;
  475. typedef typename mpl::next< iter_2 > ::type iter_3;
  476. typedef typename mpl::next< iter_3 > ::type iter_4;
  477. typedef typename mpl::next< iter_4 > ::type iter_5;
  478. typedef typename mpl::next< iter_5 > ::type iter_6;
  479. typedef typename mpl::next< iter_6 > ::type iter_7;
  480. typedef typename mpl::next< iter_7 > ::type iter_8;
  481. typedef typename mpl::next< iter_8 > ::type iter_9;
  482. typedef typename mpl::next< iter_9 > ::type iter_10;
  483. typedef typename mpl::next< iter_10 > ::type iter_11;
  484. typedef typename mpl::next< iter_11 > ::type iter_12;
  485. typedef typename mpl::next< iter_12 > ::type iter_13;
  486. typedef typename mpl::next< iter_13 > ::type iter_14;
  487. typedef typename mpl::next< iter_14 > ::type iter_15;
  488. typedef typename mpl::next< iter_15 > ::type iter_16;
  489. typedef typename mpl::next< iter_16 > ::type iter_17;
  490. typedef typename mpl::next< iter_17 > ::type iter_18;
  491. typedef typename mpl::next< iter_18 > ::type iter_19;
  492. typedef typename mpl::next< iter_19 > ::type iter_20;
  493. public:
  494. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,20)
  495. < typename mpl::deref< iter_0 > ::type
  496. , typename detail::cv_traits<
  497. typename mpl::deref< iter_1 > ::type > ::type
  498. , typename mpl::deref< iter_2 > ::type
  499. , typename mpl::deref< iter_3 > ::type
  500. , typename mpl::deref< iter_4 > ::type
  501. , typename mpl::deref< iter_5 > ::type
  502. , typename mpl::deref< iter_6 > ::type
  503. , typename mpl::deref< iter_7 > ::type
  504. , typename mpl::deref< iter_8 > ::type
  505. , typename mpl::deref< iter_9 > ::type
  506. , typename mpl::deref< iter_10 > ::type
  507. , typename mpl::deref< iter_11 > ::type
  508. , typename mpl::deref< iter_12 > ::type
  509. , typename mpl::deref< iter_13 > ::type
  510. , typename mpl::deref< iter_14 > ::type
  511. , typename mpl::deref< iter_15 > ::type
  512. , typename mpl::deref< iter_16 > ::type
  513. , typename mpl::deref< iter_17 > ::type
  514. , typename mpl::deref< iter_18 > ::type
  515. , typename mpl::deref< iter_19 > ::type
  516. , typename mpl::deref< iter_20 > ::type
  517. > ::type type;
  518. };
  519. };
  520. # undef BOOST_FT_make_type
  521. # undef BOOST_FT_make_type_impl