arity20_0.hpp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  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_0.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) (T0 , 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 mpl::deref< iter_1 > ::type
  47. , typename mpl::deref< iter_2 > ::type
  48. , typename mpl::deref< iter_3 > ::type
  49. , typename mpl::deref< iter_4 > ::type
  50. , typename mpl::deref< iter_5 > ::type
  51. , typename mpl::deref< iter_6 > ::type
  52. , typename mpl::deref< iter_7 > ::type
  53. , typename mpl::deref< iter_8 > ::type
  54. , typename mpl::deref< iter_9 > ::type
  55. , typename mpl::deref< iter_10 > ::type
  56. , typename mpl::deref< iter_11 > ::type
  57. > ::type type;
  58. };
  59. };
  60. 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 >
  61. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,12)
  62. {
  63. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 BOOST_FT_ell) BOOST_FT_cv ;
  64. };
  65. template< >
  66. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 13 >
  67. {
  68. template<typename S> struct synthesize_impl_i
  69. {
  70. private:
  71. typedef typename mpl::begin<S> ::type iter_0;
  72. typedef typename mpl::next< iter_0 > ::type iter_1;
  73. typedef typename mpl::next< iter_1 > ::type iter_2;
  74. typedef typename mpl::next< iter_2 > ::type iter_3;
  75. typedef typename mpl::next< iter_3 > ::type iter_4;
  76. typedef typename mpl::next< iter_4 > ::type iter_5;
  77. typedef typename mpl::next< iter_5 > ::type iter_6;
  78. typedef typename mpl::next< iter_6 > ::type iter_7;
  79. typedef typename mpl::next< iter_7 > ::type iter_8;
  80. typedef typename mpl::next< iter_8 > ::type iter_9;
  81. typedef typename mpl::next< iter_9 > ::type iter_10;
  82. typedef typename mpl::next< iter_10 > ::type iter_11;
  83. typedef typename mpl::next< iter_11 > ::type iter_12;
  84. public:
  85. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,12)
  86. < typename mpl::deref< iter_0 > ::type
  87. , typename mpl::deref< iter_1 > ::type
  88. , typename mpl::deref< iter_2 > ::type
  89. , typename mpl::deref< iter_3 > ::type
  90. , typename mpl::deref< iter_4 > ::type
  91. , typename mpl::deref< iter_5 > ::type
  92. , typename mpl::deref< iter_6 > ::type
  93. , typename mpl::deref< iter_7 > ::type
  94. , typename mpl::deref< iter_8 > ::type
  95. , typename mpl::deref< iter_9 > ::type
  96. , typename mpl::deref< iter_10 > ::type
  97. , typename mpl::deref< iter_11 > ::type
  98. , typename mpl::deref< iter_12 > ::type
  99. > ::type type;
  100. };
  101. };
  102. 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 >
  103. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,13)
  104. {
  105. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 BOOST_FT_ell) BOOST_FT_cv ;
  106. };
  107. template< >
  108. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 14 >
  109. {
  110. template<typename S> struct synthesize_impl_i
  111. {
  112. private:
  113. typedef typename mpl::begin<S> ::type iter_0;
  114. typedef typename mpl::next< iter_0 > ::type iter_1;
  115. typedef typename mpl::next< iter_1 > ::type iter_2;
  116. typedef typename mpl::next< iter_2 > ::type iter_3;
  117. typedef typename mpl::next< iter_3 > ::type iter_4;
  118. typedef typename mpl::next< iter_4 > ::type iter_5;
  119. typedef typename mpl::next< iter_5 > ::type iter_6;
  120. typedef typename mpl::next< iter_6 > ::type iter_7;
  121. typedef typename mpl::next< iter_7 > ::type iter_8;
  122. typedef typename mpl::next< iter_8 > ::type iter_9;
  123. typedef typename mpl::next< iter_9 > ::type iter_10;
  124. typedef typename mpl::next< iter_10 > ::type iter_11;
  125. typedef typename mpl::next< iter_11 > ::type iter_12;
  126. typedef typename mpl::next< iter_12 > ::type iter_13;
  127. public:
  128. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,13)
  129. < typename mpl::deref< iter_0 > ::type
  130. , typename mpl::deref< iter_1 > ::type
  131. , typename mpl::deref< iter_2 > ::type
  132. , typename mpl::deref< iter_3 > ::type
  133. , typename mpl::deref< iter_4 > ::type
  134. , typename mpl::deref< iter_5 > ::type
  135. , typename mpl::deref< iter_6 > ::type
  136. , typename mpl::deref< iter_7 > ::type
  137. , typename mpl::deref< iter_8 > ::type
  138. , typename mpl::deref< iter_9 > ::type
  139. , typename mpl::deref< iter_10 > ::type
  140. , typename mpl::deref< iter_11 > ::type
  141. , typename mpl::deref< iter_12 > ::type
  142. , typename mpl::deref< iter_13 > ::type
  143. > ::type type;
  144. };
  145. };
  146. 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 >
  147. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,14)
  148. {
  149. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 BOOST_FT_ell) BOOST_FT_cv ;
  150. };
  151. template< >
  152. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 15 >
  153. {
  154. template<typename S> struct synthesize_impl_i
  155. {
  156. private:
  157. typedef typename mpl::begin<S> ::type iter_0;
  158. typedef typename mpl::next< iter_0 > ::type iter_1;
  159. typedef typename mpl::next< iter_1 > ::type iter_2;
  160. typedef typename mpl::next< iter_2 > ::type iter_3;
  161. typedef typename mpl::next< iter_3 > ::type iter_4;
  162. typedef typename mpl::next< iter_4 > ::type iter_5;
  163. typedef typename mpl::next< iter_5 > ::type iter_6;
  164. typedef typename mpl::next< iter_6 > ::type iter_7;
  165. typedef typename mpl::next< iter_7 > ::type iter_8;
  166. typedef typename mpl::next< iter_8 > ::type iter_9;
  167. typedef typename mpl::next< iter_9 > ::type iter_10;
  168. typedef typename mpl::next< iter_10 > ::type iter_11;
  169. typedef typename mpl::next< iter_11 > ::type iter_12;
  170. typedef typename mpl::next< iter_12 > ::type iter_13;
  171. typedef typename mpl::next< iter_13 > ::type iter_14;
  172. public:
  173. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,14)
  174. < typename mpl::deref< iter_0 > ::type
  175. , typename mpl::deref< iter_1 > ::type
  176. , typename mpl::deref< iter_2 > ::type
  177. , typename mpl::deref< iter_3 > ::type
  178. , typename mpl::deref< iter_4 > ::type
  179. , typename mpl::deref< iter_5 > ::type
  180. , typename mpl::deref< iter_6 > ::type
  181. , typename mpl::deref< iter_7 > ::type
  182. , typename mpl::deref< iter_8 > ::type
  183. , typename mpl::deref< iter_9 > ::type
  184. , typename mpl::deref< iter_10 > ::type
  185. , typename mpl::deref< iter_11 > ::type
  186. , typename mpl::deref< iter_12 > ::type
  187. , typename mpl::deref< iter_13 > ::type
  188. , typename mpl::deref< iter_14 > ::type
  189. > ::type type;
  190. };
  191. };
  192. 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 >
  193. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,15)
  194. {
  195. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 BOOST_FT_ell) BOOST_FT_cv ;
  196. };
  197. template< >
  198. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 16 >
  199. {
  200. template<typename S> struct synthesize_impl_i
  201. {
  202. private:
  203. typedef typename mpl::begin<S> ::type iter_0;
  204. typedef typename mpl::next< iter_0 > ::type iter_1;
  205. typedef typename mpl::next< iter_1 > ::type iter_2;
  206. typedef typename mpl::next< iter_2 > ::type iter_3;
  207. typedef typename mpl::next< iter_3 > ::type iter_4;
  208. typedef typename mpl::next< iter_4 > ::type iter_5;
  209. typedef typename mpl::next< iter_5 > ::type iter_6;
  210. typedef typename mpl::next< iter_6 > ::type iter_7;
  211. typedef typename mpl::next< iter_7 > ::type iter_8;
  212. typedef typename mpl::next< iter_8 > ::type iter_9;
  213. typedef typename mpl::next< iter_9 > ::type iter_10;
  214. typedef typename mpl::next< iter_10 > ::type iter_11;
  215. typedef typename mpl::next< iter_11 > ::type iter_12;
  216. typedef typename mpl::next< iter_12 > ::type iter_13;
  217. typedef typename mpl::next< iter_13 > ::type iter_14;
  218. typedef typename mpl::next< iter_14 > ::type iter_15;
  219. public:
  220. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,15)
  221. < typename mpl::deref< iter_0 > ::type
  222. , typename mpl::deref< iter_1 > ::type
  223. , typename mpl::deref< iter_2 > ::type
  224. , typename mpl::deref< iter_3 > ::type
  225. , typename mpl::deref< iter_4 > ::type
  226. , typename mpl::deref< iter_5 > ::type
  227. , typename mpl::deref< iter_6 > ::type
  228. , typename mpl::deref< iter_7 > ::type
  229. , typename mpl::deref< iter_8 > ::type
  230. , typename mpl::deref< iter_9 > ::type
  231. , typename mpl::deref< iter_10 > ::type
  232. , typename mpl::deref< iter_11 > ::type
  233. , typename mpl::deref< iter_12 > ::type
  234. , typename mpl::deref< iter_13 > ::type
  235. , typename mpl::deref< iter_14 > ::type
  236. , typename mpl::deref< iter_15 > ::type
  237. > ::type type;
  238. };
  239. };
  240. 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 >
  241. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,16)
  242. {
  243. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 BOOST_FT_ell) BOOST_FT_cv ;
  244. };
  245. template< >
  246. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 17 >
  247. {
  248. template<typename S> struct synthesize_impl_i
  249. {
  250. private:
  251. typedef typename mpl::begin<S> ::type iter_0;
  252. typedef typename mpl::next< iter_0 > ::type iter_1;
  253. typedef typename mpl::next< iter_1 > ::type iter_2;
  254. typedef typename mpl::next< iter_2 > ::type iter_3;
  255. typedef typename mpl::next< iter_3 > ::type iter_4;
  256. typedef typename mpl::next< iter_4 > ::type iter_5;
  257. typedef typename mpl::next< iter_5 > ::type iter_6;
  258. typedef typename mpl::next< iter_6 > ::type iter_7;
  259. typedef typename mpl::next< iter_7 > ::type iter_8;
  260. typedef typename mpl::next< iter_8 > ::type iter_9;
  261. typedef typename mpl::next< iter_9 > ::type iter_10;
  262. typedef typename mpl::next< iter_10 > ::type iter_11;
  263. typedef typename mpl::next< iter_11 > ::type iter_12;
  264. typedef typename mpl::next< iter_12 > ::type iter_13;
  265. typedef typename mpl::next< iter_13 > ::type iter_14;
  266. typedef typename mpl::next< iter_14 > ::type iter_15;
  267. typedef typename mpl::next< iter_15 > ::type iter_16;
  268. public:
  269. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,16)
  270. < typename mpl::deref< iter_0 > ::type
  271. , typename mpl::deref< iter_1 > ::type
  272. , typename mpl::deref< iter_2 > ::type
  273. , typename mpl::deref< iter_3 > ::type
  274. , typename mpl::deref< iter_4 > ::type
  275. , typename mpl::deref< iter_5 > ::type
  276. , typename mpl::deref< iter_6 > ::type
  277. , typename mpl::deref< iter_7 > ::type
  278. , typename mpl::deref< iter_8 > ::type
  279. , typename mpl::deref< iter_9 > ::type
  280. , typename mpl::deref< iter_10 > ::type
  281. , typename mpl::deref< iter_11 > ::type
  282. , typename mpl::deref< iter_12 > ::type
  283. , typename mpl::deref< iter_13 > ::type
  284. , typename mpl::deref< iter_14 > ::type
  285. , typename mpl::deref< iter_15 > ::type
  286. , typename mpl::deref< iter_16 > ::type
  287. > ::type type;
  288. };
  289. };
  290. 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 >
  291. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,17)
  292. {
  293. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 BOOST_FT_ell) BOOST_FT_cv ;
  294. };
  295. template< >
  296. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 18 >
  297. {
  298. template<typename S> struct synthesize_impl_i
  299. {
  300. private:
  301. typedef typename mpl::begin<S> ::type iter_0;
  302. typedef typename mpl::next< iter_0 > ::type iter_1;
  303. typedef typename mpl::next< iter_1 > ::type iter_2;
  304. typedef typename mpl::next< iter_2 > ::type iter_3;
  305. typedef typename mpl::next< iter_3 > ::type iter_4;
  306. typedef typename mpl::next< iter_4 > ::type iter_5;
  307. typedef typename mpl::next< iter_5 > ::type iter_6;
  308. typedef typename mpl::next< iter_6 > ::type iter_7;
  309. typedef typename mpl::next< iter_7 > ::type iter_8;
  310. typedef typename mpl::next< iter_8 > ::type iter_9;
  311. typedef typename mpl::next< iter_9 > ::type iter_10;
  312. typedef typename mpl::next< iter_10 > ::type iter_11;
  313. typedef typename mpl::next< iter_11 > ::type iter_12;
  314. typedef typename mpl::next< iter_12 > ::type iter_13;
  315. typedef typename mpl::next< iter_13 > ::type iter_14;
  316. typedef typename mpl::next< iter_14 > ::type iter_15;
  317. typedef typename mpl::next< iter_15 > ::type iter_16;
  318. typedef typename mpl::next< iter_16 > ::type iter_17;
  319. public:
  320. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,17)
  321. < typename mpl::deref< iter_0 > ::type
  322. , typename mpl::deref< iter_1 > ::type
  323. , typename mpl::deref< iter_2 > ::type
  324. , typename mpl::deref< iter_3 > ::type
  325. , typename mpl::deref< iter_4 > ::type
  326. , typename mpl::deref< iter_5 > ::type
  327. , typename mpl::deref< iter_6 > ::type
  328. , typename mpl::deref< iter_7 > ::type
  329. , typename mpl::deref< iter_8 > ::type
  330. , typename mpl::deref< iter_9 > ::type
  331. , typename mpl::deref< iter_10 > ::type
  332. , typename mpl::deref< iter_11 > ::type
  333. , typename mpl::deref< iter_12 > ::type
  334. , typename mpl::deref< iter_13 > ::type
  335. , typename mpl::deref< iter_14 > ::type
  336. , typename mpl::deref< iter_15 > ::type
  337. , typename mpl::deref< iter_16 > ::type
  338. , typename mpl::deref< iter_17 > ::type
  339. > ::type type;
  340. };
  341. };
  342. 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 >
  343. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,18)
  344. {
  345. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 BOOST_FT_ell) BOOST_FT_cv ;
  346. };
  347. template< >
  348. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 19 >
  349. {
  350. template<typename S> struct synthesize_impl_i
  351. {
  352. private:
  353. typedef typename mpl::begin<S> ::type iter_0;
  354. typedef typename mpl::next< iter_0 > ::type iter_1;
  355. typedef typename mpl::next< iter_1 > ::type iter_2;
  356. typedef typename mpl::next< iter_2 > ::type iter_3;
  357. typedef typename mpl::next< iter_3 > ::type iter_4;
  358. typedef typename mpl::next< iter_4 > ::type iter_5;
  359. typedef typename mpl::next< iter_5 > ::type iter_6;
  360. typedef typename mpl::next< iter_6 > ::type iter_7;
  361. typedef typename mpl::next< iter_7 > ::type iter_8;
  362. typedef typename mpl::next< iter_8 > ::type iter_9;
  363. typedef typename mpl::next< iter_9 > ::type iter_10;
  364. typedef typename mpl::next< iter_10 > ::type iter_11;
  365. typedef typename mpl::next< iter_11 > ::type iter_12;
  366. typedef typename mpl::next< iter_12 > ::type iter_13;
  367. typedef typename mpl::next< iter_13 > ::type iter_14;
  368. typedef typename mpl::next< iter_14 > ::type iter_15;
  369. typedef typename mpl::next< iter_15 > ::type iter_16;
  370. typedef typename mpl::next< iter_16 > ::type iter_17;
  371. typedef typename mpl::next< iter_17 > ::type iter_18;
  372. public:
  373. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,18)
  374. < typename mpl::deref< iter_0 > ::type
  375. , typename mpl::deref< iter_1 > ::type
  376. , typename mpl::deref< iter_2 > ::type
  377. , typename mpl::deref< iter_3 > ::type
  378. , typename mpl::deref< iter_4 > ::type
  379. , typename mpl::deref< iter_5 > ::type
  380. , typename mpl::deref< iter_6 > ::type
  381. , typename mpl::deref< iter_7 > ::type
  382. , typename mpl::deref< iter_8 > ::type
  383. , typename mpl::deref< iter_9 > ::type
  384. , typename mpl::deref< iter_10 > ::type
  385. , typename mpl::deref< iter_11 > ::type
  386. , typename mpl::deref< iter_12 > ::type
  387. , typename mpl::deref< iter_13 > ::type
  388. , typename mpl::deref< iter_14 > ::type
  389. , typename mpl::deref< iter_15 > ::type
  390. , typename mpl::deref< iter_16 > ::type
  391. , typename mpl::deref< iter_17 > ::type
  392. , typename mpl::deref< iter_18 > ::type
  393. > ::type type;
  394. };
  395. };
  396. 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 >
  397. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,19)
  398. {
  399. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 BOOST_FT_ell) BOOST_FT_cv ;
  400. };
  401. template< >
  402. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 20 >
  403. {
  404. template<typename S> struct synthesize_impl_i
  405. {
  406. private:
  407. typedef typename mpl::begin<S> ::type iter_0;
  408. typedef typename mpl::next< iter_0 > ::type iter_1;
  409. typedef typename mpl::next< iter_1 > ::type iter_2;
  410. typedef typename mpl::next< iter_2 > ::type iter_3;
  411. typedef typename mpl::next< iter_3 > ::type iter_4;
  412. typedef typename mpl::next< iter_4 > ::type iter_5;
  413. typedef typename mpl::next< iter_5 > ::type iter_6;
  414. typedef typename mpl::next< iter_6 > ::type iter_7;
  415. typedef typename mpl::next< iter_7 > ::type iter_8;
  416. typedef typename mpl::next< iter_8 > ::type iter_9;
  417. typedef typename mpl::next< iter_9 > ::type iter_10;
  418. typedef typename mpl::next< iter_10 > ::type iter_11;
  419. typedef typename mpl::next< iter_11 > ::type iter_12;
  420. typedef typename mpl::next< iter_12 > ::type iter_13;
  421. typedef typename mpl::next< iter_13 > ::type iter_14;
  422. typedef typename mpl::next< iter_14 > ::type iter_15;
  423. typedef typename mpl::next< iter_15 > ::type iter_16;
  424. typedef typename mpl::next< iter_16 > ::type iter_17;
  425. typedef typename mpl::next< iter_17 > ::type iter_18;
  426. typedef typename mpl::next< iter_18 > ::type iter_19;
  427. public:
  428. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,19)
  429. < typename mpl::deref< iter_0 > ::type
  430. , typename mpl::deref< iter_1 > ::type
  431. , typename mpl::deref< iter_2 > ::type
  432. , typename mpl::deref< iter_3 > ::type
  433. , typename mpl::deref< iter_4 > ::type
  434. , typename mpl::deref< iter_5 > ::type
  435. , typename mpl::deref< iter_6 > ::type
  436. , typename mpl::deref< iter_7 > ::type
  437. , typename mpl::deref< iter_8 > ::type
  438. , typename mpl::deref< iter_9 > ::type
  439. , typename mpl::deref< iter_10 > ::type
  440. , typename mpl::deref< iter_11 > ::type
  441. , typename mpl::deref< iter_12 > ::type
  442. , typename mpl::deref< iter_13 > ::type
  443. , typename mpl::deref< iter_14 > ::type
  444. , typename mpl::deref< iter_15 > ::type
  445. , typename mpl::deref< iter_16 > ::type
  446. , typename mpl::deref< iter_17 > ::type
  447. , typename mpl::deref< iter_18 > ::type
  448. , typename mpl::deref< iter_19 > ::type
  449. > ::type type;
  450. };
  451. };
  452. 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 >
  453. struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,20)
  454. {
  455. typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T0 , 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 ;
  456. };
  457. template< >
  458. struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 21 >
  459. {
  460. template<typename S> struct synthesize_impl_i
  461. {
  462. private:
  463. typedef typename mpl::begin<S> ::type iter_0;
  464. typedef typename mpl::next< iter_0 > ::type iter_1;
  465. typedef typename mpl::next< iter_1 > ::type iter_2;
  466. typedef typename mpl::next< iter_2 > ::type iter_3;
  467. typedef typename mpl::next< iter_3 > ::type iter_4;
  468. typedef typename mpl::next< iter_4 > ::type iter_5;
  469. typedef typename mpl::next< iter_5 > ::type iter_6;
  470. typedef typename mpl::next< iter_6 > ::type iter_7;
  471. typedef typename mpl::next< iter_7 > ::type iter_8;
  472. typedef typename mpl::next< iter_8 > ::type iter_9;
  473. typedef typename mpl::next< iter_9 > ::type iter_10;
  474. typedef typename mpl::next< iter_10 > ::type iter_11;
  475. typedef typename mpl::next< iter_11 > ::type iter_12;
  476. typedef typename mpl::next< iter_12 > ::type iter_13;
  477. typedef typename mpl::next< iter_13 > ::type iter_14;
  478. typedef typename mpl::next< iter_14 > ::type iter_15;
  479. typedef typename mpl::next< iter_15 > ::type iter_16;
  480. typedef typename mpl::next< iter_16 > ::type iter_17;
  481. typedef typename mpl::next< iter_17 > ::type iter_18;
  482. typedef typename mpl::next< iter_18 > ::type iter_19;
  483. typedef typename mpl::next< iter_19 > ::type iter_20;
  484. public:
  485. typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,20)
  486. < typename mpl::deref< iter_0 > ::type
  487. , typename mpl::deref< iter_1 > ::type
  488. , typename mpl::deref< iter_2 > ::type
  489. , typename mpl::deref< iter_3 > ::type
  490. , typename mpl::deref< iter_4 > ::type
  491. , typename mpl::deref< iter_5 > ::type
  492. , typename mpl::deref< iter_6 > ::type
  493. , typename mpl::deref< iter_7 > ::type
  494. , typename mpl::deref< iter_8 > ::type
  495. , typename mpl::deref< iter_9 > ::type
  496. , typename mpl::deref< iter_10 > ::type
  497. , typename mpl::deref< iter_11 > ::type
  498. , typename mpl::deref< iter_12 > ::type
  499. , typename mpl::deref< iter_13 > ::type
  500. , typename mpl::deref< iter_14 > ::type
  501. , typename mpl::deref< iter_15 > ::type
  502. , typename mpl::deref< iter_16 > ::type
  503. , typename mpl::deref< iter_17 > ::type
  504. , typename mpl::deref< iter_18 > ::type
  505. , typename mpl::deref< iter_19 > ::type
  506. , typename mpl::deref< iter_20 > ::type
  507. > ::type type;
  508. };
  509. };
  510. # undef BOOST_FT_make_type
  511. # undef BOOST_FT_make_type_impl