catch_push_back_20.hpp 115 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927
  1. /*==============================================================================
  2. Copyright (c) 2005-2010 Joel de Guzman
  3. Copyright (c) 2010 Thomas Heller
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. ==============================================================================*/
  7. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  8. struct catch_push_back<TryCatch, Exception, Capture, Expr, 2>
  9. {
  10. typedef
  11. typename proto::result_of::make_expr<
  12. phoenix::tag::catch_
  13. , proto::basic_default_domain
  14. , catch_exception<Exception>
  15. , Capture
  16. , Expr
  17. >::type
  18. catch_expr;
  19. typedef phoenix::expression::try_catch<
  20. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
  21. , catch_expr> gen_type;
  22. typedef typename gen_type::type type;
  23. static type
  24. make(
  25. TryCatch const& try_catch
  26. , Capture const& capture
  27. , Expr const& catch_
  28. )
  29. {
  30. return
  31. gen_type::make(
  32. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
  33. , proto::make_expr<
  34. phoenix::tag::catch_
  35. , proto::basic_default_domain
  36. >(catch_exception<Exception>(), capture, catch_)
  37. );
  38. }
  39. };
  40. template <typename TryCatch, typename Exception, typename Expr>
  41. struct catch_push_back<TryCatch, Exception, void, Expr, 2>
  42. {
  43. typedef
  44. typename proto::result_of::make_expr<
  45. phoenix::tag::catch_
  46. , proto::basic_default_domain
  47. , catch_exception<Exception>
  48. , Expr
  49. >::type
  50. catch_expr;
  51. typedef phoenix::expression::try_catch<
  52. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
  53. , catch_expr> gen_type;
  54. typedef typename gen_type::type type;
  55. static type
  56. make(
  57. TryCatch const& try_catch
  58. , Expr const& catch_
  59. )
  60. {
  61. return
  62. gen_type::make(
  63. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
  64. , proto::make_expr<
  65. phoenix::tag::catch_
  66. , proto::basic_default_domain
  67. >(catch_exception<Exception>(), catch_)
  68. );
  69. }
  70. };
  71. template <typename TryCatch, typename Expr>
  72. struct catch_all_push_back<TryCatch, Expr, 2>
  73. {
  74. typedef
  75. typename proto::result_of::make_expr<
  76. phoenix::tag::catch_all
  77. , proto::basic_default_domain
  78. , Expr
  79. >::type
  80. catch_expr;
  81. typedef phoenix::expression::try_catch<
  82. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
  83. , catch_expr> gen_type;
  84. typedef typename gen_type::type type;
  85. static type
  86. make(
  87. TryCatch const& try_catch
  88. , Expr const& catch_
  89. )
  90. {
  91. return
  92. gen_type::make(
  93. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
  94. , proto::make_expr<
  95. phoenix::tag::catch_all
  96. , proto::basic_default_domain
  97. >(catch_)
  98. );
  99. }
  100. };
  101. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  102. struct catch_push_back<TryCatch, Exception, Capture, Expr, 3>
  103. {
  104. typedef
  105. typename proto::result_of::make_expr<
  106. phoenix::tag::catch_
  107. , proto::basic_default_domain
  108. , catch_exception<Exception>
  109. , Capture
  110. , Expr
  111. >::type
  112. catch_expr;
  113. typedef phoenix::expression::try_catch<
  114. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type
  115. , catch_expr> gen_type;
  116. typedef typename gen_type::type type;
  117. static type
  118. make(
  119. TryCatch const& try_catch
  120. , Capture const& capture
  121. , Expr const& catch_
  122. )
  123. {
  124. return
  125. gen_type::make(
  126. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
  127. , proto::make_expr<
  128. phoenix::tag::catch_
  129. , proto::basic_default_domain
  130. >(catch_exception<Exception>(), capture, catch_)
  131. );
  132. }
  133. };
  134. template <typename TryCatch, typename Exception, typename Expr>
  135. struct catch_push_back<TryCatch, Exception, void, Expr, 3>
  136. {
  137. typedef
  138. typename proto::result_of::make_expr<
  139. phoenix::tag::catch_
  140. , proto::basic_default_domain
  141. , catch_exception<Exception>
  142. , Expr
  143. >::type
  144. catch_expr;
  145. typedef phoenix::expression::try_catch<
  146. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type
  147. , catch_expr> gen_type;
  148. typedef typename gen_type::type type;
  149. static type
  150. make(
  151. TryCatch const& try_catch
  152. , Expr const& catch_
  153. )
  154. {
  155. return
  156. gen_type::make(
  157. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
  158. , proto::make_expr<
  159. phoenix::tag::catch_
  160. , proto::basic_default_domain
  161. >(catch_exception<Exception>(), catch_)
  162. );
  163. }
  164. };
  165. template <typename TryCatch, typename Expr>
  166. struct catch_all_push_back<TryCatch, Expr, 3>
  167. {
  168. typedef
  169. typename proto::result_of::make_expr<
  170. phoenix::tag::catch_all
  171. , proto::basic_default_domain
  172. , Expr
  173. >::type
  174. catch_expr;
  175. typedef phoenix::expression::try_catch<
  176. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type
  177. , catch_expr> gen_type;
  178. typedef typename gen_type::type type;
  179. static type
  180. make(
  181. TryCatch const& try_catch
  182. , Expr const& catch_
  183. )
  184. {
  185. return
  186. gen_type::make(
  187. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
  188. , proto::make_expr<
  189. phoenix::tag::catch_all
  190. , proto::basic_default_domain
  191. >(catch_)
  192. );
  193. }
  194. };
  195. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  196. struct catch_push_back<TryCatch, Exception, Capture, Expr, 4>
  197. {
  198. typedef
  199. typename proto::result_of::make_expr<
  200. phoenix::tag::catch_
  201. , proto::basic_default_domain
  202. , catch_exception<Exception>
  203. , Capture
  204. , Expr
  205. >::type
  206. catch_expr;
  207. typedef phoenix::expression::try_catch<
  208. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type
  209. , catch_expr> gen_type;
  210. typedef typename gen_type::type type;
  211. static type
  212. make(
  213. TryCatch const& try_catch
  214. , Capture const& capture
  215. , Expr const& catch_
  216. )
  217. {
  218. return
  219. gen_type::make(
  220. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
  221. , proto::make_expr<
  222. phoenix::tag::catch_
  223. , proto::basic_default_domain
  224. >(catch_exception<Exception>(), capture, catch_)
  225. );
  226. }
  227. };
  228. template <typename TryCatch, typename Exception, typename Expr>
  229. struct catch_push_back<TryCatch, Exception, void, Expr, 4>
  230. {
  231. typedef
  232. typename proto::result_of::make_expr<
  233. phoenix::tag::catch_
  234. , proto::basic_default_domain
  235. , catch_exception<Exception>
  236. , Expr
  237. >::type
  238. catch_expr;
  239. typedef phoenix::expression::try_catch<
  240. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type
  241. , catch_expr> gen_type;
  242. typedef typename gen_type::type type;
  243. static type
  244. make(
  245. TryCatch const& try_catch
  246. , Expr const& catch_
  247. )
  248. {
  249. return
  250. gen_type::make(
  251. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
  252. , proto::make_expr<
  253. phoenix::tag::catch_
  254. , proto::basic_default_domain
  255. >(catch_exception<Exception>(), catch_)
  256. );
  257. }
  258. };
  259. template <typename TryCatch, typename Expr>
  260. struct catch_all_push_back<TryCatch, Expr, 4>
  261. {
  262. typedef
  263. typename proto::result_of::make_expr<
  264. phoenix::tag::catch_all
  265. , proto::basic_default_domain
  266. , Expr
  267. >::type
  268. catch_expr;
  269. typedef phoenix::expression::try_catch<
  270. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type
  271. , catch_expr> gen_type;
  272. typedef typename gen_type::type type;
  273. static type
  274. make(
  275. TryCatch const& try_catch
  276. , Expr const& catch_
  277. )
  278. {
  279. return
  280. gen_type::make(
  281. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
  282. , proto::make_expr<
  283. phoenix::tag::catch_all
  284. , proto::basic_default_domain
  285. >(catch_)
  286. );
  287. }
  288. };
  289. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  290. struct catch_push_back<TryCatch, Exception, Capture, Expr, 5>
  291. {
  292. typedef
  293. typename proto::result_of::make_expr<
  294. phoenix::tag::catch_
  295. , proto::basic_default_domain
  296. , catch_exception<Exception>
  297. , Capture
  298. , Expr
  299. >::type
  300. catch_expr;
  301. typedef phoenix::expression::try_catch<
  302. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type
  303. , catch_expr> gen_type;
  304. typedef typename gen_type::type type;
  305. static type
  306. make(
  307. TryCatch const& try_catch
  308. , Capture const& capture
  309. , Expr const& catch_
  310. )
  311. {
  312. return
  313. gen_type::make(
  314. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch)
  315. , proto::make_expr<
  316. phoenix::tag::catch_
  317. , proto::basic_default_domain
  318. >(catch_exception<Exception>(), capture, catch_)
  319. );
  320. }
  321. };
  322. template <typename TryCatch, typename Exception, typename Expr>
  323. struct catch_push_back<TryCatch, Exception, void, Expr, 5>
  324. {
  325. typedef
  326. typename proto::result_of::make_expr<
  327. phoenix::tag::catch_
  328. , proto::basic_default_domain
  329. , catch_exception<Exception>
  330. , Expr
  331. >::type
  332. catch_expr;
  333. typedef phoenix::expression::try_catch<
  334. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type
  335. , catch_expr> gen_type;
  336. typedef typename gen_type::type type;
  337. static type
  338. make(
  339. TryCatch const& try_catch
  340. , Expr const& catch_
  341. )
  342. {
  343. return
  344. gen_type::make(
  345. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch)
  346. , proto::make_expr<
  347. phoenix::tag::catch_
  348. , proto::basic_default_domain
  349. >(catch_exception<Exception>(), catch_)
  350. );
  351. }
  352. };
  353. template <typename TryCatch, typename Expr>
  354. struct catch_all_push_back<TryCatch, Expr, 5>
  355. {
  356. typedef
  357. typename proto::result_of::make_expr<
  358. phoenix::tag::catch_all
  359. , proto::basic_default_domain
  360. , Expr
  361. >::type
  362. catch_expr;
  363. typedef phoenix::expression::try_catch<
  364. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type
  365. , catch_expr> gen_type;
  366. typedef typename gen_type::type type;
  367. static type
  368. make(
  369. TryCatch const& try_catch
  370. , Expr const& catch_
  371. )
  372. {
  373. return
  374. gen_type::make(
  375. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch)
  376. , proto::make_expr<
  377. phoenix::tag::catch_all
  378. , proto::basic_default_domain
  379. >(catch_)
  380. );
  381. }
  382. };
  383. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  384. struct catch_push_back<TryCatch, Exception, Capture, Expr, 6>
  385. {
  386. typedef
  387. typename proto::result_of::make_expr<
  388. phoenix::tag::catch_
  389. , proto::basic_default_domain
  390. , catch_exception<Exception>
  391. , Capture
  392. , Expr
  393. >::type
  394. catch_expr;
  395. typedef phoenix::expression::try_catch<
  396. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type
  397. , catch_expr> gen_type;
  398. typedef typename gen_type::type type;
  399. static type
  400. make(
  401. TryCatch const& try_catch
  402. , Capture const& capture
  403. , Expr const& catch_
  404. )
  405. {
  406. return
  407. gen_type::make(
  408. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch)
  409. , proto::make_expr<
  410. phoenix::tag::catch_
  411. , proto::basic_default_domain
  412. >(catch_exception<Exception>(), capture, catch_)
  413. );
  414. }
  415. };
  416. template <typename TryCatch, typename Exception, typename Expr>
  417. struct catch_push_back<TryCatch, Exception, void, Expr, 6>
  418. {
  419. typedef
  420. typename proto::result_of::make_expr<
  421. phoenix::tag::catch_
  422. , proto::basic_default_domain
  423. , catch_exception<Exception>
  424. , Expr
  425. >::type
  426. catch_expr;
  427. typedef phoenix::expression::try_catch<
  428. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type
  429. , catch_expr> gen_type;
  430. typedef typename gen_type::type type;
  431. static type
  432. make(
  433. TryCatch const& try_catch
  434. , Expr const& catch_
  435. )
  436. {
  437. return
  438. gen_type::make(
  439. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch)
  440. , proto::make_expr<
  441. phoenix::tag::catch_
  442. , proto::basic_default_domain
  443. >(catch_exception<Exception>(), catch_)
  444. );
  445. }
  446. };
  447. template <typename TryCatch, typename Expr>
  448. struct catch_all_push_back<TryCatch, Expr, 6>
  449. {
  450. typedef
  451. typename proto::result_of::make_expr<
  452. phoenix::tag::catch_all
  453. , proto::basic_default_domain
  454. , Expr
  455. >::type
  456. catch_expr;
  457. typedef phoenix::expression::try_catch<
  458. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type
  459. , catch_expr> gen_type;
  460. typedef typename gen_type::type type;
  461. static type
  462. make(
  463. TryCatch const& try_catch
  464. , Expr const& catch_
  465. )
  466. {
  467. return
  468. gen_type::make(
  469. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch)
  470. , proto::make_expr<
  471. phoenix::tag::catch_all
  472. , proto::basic_default_domain
  473. >(catch_)
  474. );
  475. }
  476. };
  477. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  478. struct catch_push_back<TryCatch, Exception, Capture, Expr, 7>
  479. {
  480. typedef
  481. typename proto::result_of::make_expr<
  482. phoenix::tag::catch_
  483. , proto::basic_default_domain
  484. , catch_exception<Exception>
  485. , Capture
  486. , Expr
  487. >::type
  488. catch_expr;
  489. typedef phoenix::expression::try_catch<
  490. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type
  491. , catch_expr> gen_type;
  492. typedef typename gen_type::type type;
  493. static type
  494. make(
  495. TryCatch const& try_catch
  496. , Capture const& capture
  497. , Expr const& catch_
  498. )
  499. {
  500. return
  501. gen_type::make(
  502. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch)
  503. , proto::make_expr<
  504. phoenix::tag::catch_
  505. , proto::basic_default_domain
  506. >(catch_exception<Exception>(), capture, catch_)
  507. );
  508. }
  509. };
  510. template <typename TryCatch, typename Exception, typename Expr>
  511. struct catch_push_back<TryCatch, Exception, void, Expr, 7>
  512. {
  513. typedef
  514. typename proto::result_of::make_expr<
  515. phoenix::tag::catch_
  516. , proto::basic_default_domain
  517. , catch_exception<Exception>
  518. , Expr
  519. >::type
  520. catch_expr;
  521. typedef phoenix::expression::try_catch<
  522. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type
  523. , catch_expr> gen_type;
  524. typedef typename gen_type::type type;
  525. static type
  526. make(
  527. TryCatch const& try_catch
  528. , Expr const& catch_
  529. )
  530. {
  531. return
  532. gen_type::make(
  533. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch)
  534. , proto::make_expr<
  535. phoenix::tag::catch_
  536. , proto::basic_default_domain
  537. >(catch_exception<Exception>(), catch_)
  538. );
  539. }
  540. };
  541. template <typename TryCatch, typename Expr>
  542. struct catch_all_push_back<TryCatch, Expr, 7>
  543. {
  544. typedef
  545. typename proto::result_of::make_expr<
  546. phoenix::tag::catch_all
  547. , proto::basic_default_domain
  548. , Expr
  549. >::type
  550. catch_expr;
  551. typedef phoenix::expression::try_catch<
  552. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type
  553. , catch_expr> gen_type;
  554. typedef typename gen_type::type type;
  555. static type
  556. make(
  557. TryCatch const& try_catch
  558. , Expr const& catch_
  559. )
  560. {
  561. return
  562. gen_type::make(
  563. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch)
  564. , proto::make_expr<
  565. phoenix::tag::catch_all
  566. , proto::basic_default_domain
  567. >(catch_)
  568. );
  569. }
  570. };
  571. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  572. struct catch_push_back<TryCatch, Exception, Capture, Expr, 8>
  573. {
  574. typedef
  575. typename proto::result_of::make_expr<
  576. phoenix::tag::catch_
  577. , proto::basic_default_domain
  578. , catch_exception<Exception>
  579. , Capture
  580. , Expr
  581. >::type
  582. catch_expr;
  583. typedef phoenix::expression::try_catch<
  584. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type
  585. , catch_expr> gen_type;
  586. typedef typename gen_type::type type;
  587. static type
  588. make(
  589. TryCatch const& try_catch
  590. , Capture const& capture
  591. , Expr const& catch_
  592. )
  593. {
  594. return
  595. gen_type::make(
  596. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch)
  597. , proto::make_expr<
  598. phoenix::tag::catch_
  599. , proto::basic_default_domain
  600. >(catch_exception<Exception>(), capture, catch_)
  601. );
  602. }
  603. };
  604. template <typename TryCatch, typename Exception, typename Expr>
  605. struct catch_push_back<TryCatch, Exception, void, Expr, 8>
  606. {
  607. typedef
  608. typename proto::result_of::make_expr<
  609. phoenix::tag::catch_
  610. , proto::basic_default_domain
  611. , catch_exception<Exception>
  612. , Expr
  613. >::type
  614. catch_expr;
  615. typedef phoenix::expression::try_catch<
  616. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type
  617. , catch_expr> gen_type;
  618. typedef typename gen_type::type type;
  619. static type
  620. make(
  621. TryCatch const& try_catch
  622. , Expr const& catch_
  623. )
  624. {
  625. return
  626. gen_type::make(
  627. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch)
  628. , proto::make_expr<
  629. phoenix::tag::catch_
  630. , proto::basic_default_domain
  631. >(catch_exception<Exception>(), catch_)
  632. );
  633. }
  634. };
  635. template <typename TryCatch, typename Expr>
  636. struct catch_all_push_back<TryCatch, Expr, 8>
  637. {
  638. typedef
  639. typename proto::result_of::make_expr<
  640. phoenix::tag::catch_all
  641. , proto::basic_default_domain
  642. , Expr
  643. >::type
  644. catch_expr;
  645. typedef phoenix::expression::try_catch<
  646. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type
  647. , catch_expr> gen_type;
  648. typedef typename gen_type::type type;
  649. static type
  650. make(
  651. TryCatch const& try_catch
  652. , Expr const& catch_
  653. )
  654. {
  655. return
  656. gen_type::make(
  657. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch)
  658. , proto::make_expr<
  659. phoenix::tag::catch_all
  660. , proto::basic_default_domain
  661. >(catch_)
  662. );
  663. }
  664. };
  665. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  666. struct catch_push_back<TryCatch, Exception, Capture, Expr, 9>
  667. {
  668. typedef
  669. typename proto::result_of::make_expr<
  670. phoenix::tag::catch_
  671. , proto::basic_default_domain
  672. , catch_exception<Exception>
  673. , Capture
  674. , Expr
  675. >::type
  676. catch_expr;
  677. typedef phoenix::expression::try_catch<
  678. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type
  679. , catch_expr> gen_type;
  680. typedef typename gen_type::type type;
  681. static type
  682. make(
  683. TryCatch const& try_catch
  684. , Capture const& capture
  685. , Expr const& catch_
  686. )
  687. {
  688. return
  689. gen_type::make(
  690. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch)
  691. , proto::make_expr<
  692. phoenix::tag::catch_
  693. , proto::basic_default_domain
  694. >(catch_exception<Exception>(), capture, catch_)
  695. );
  696. }
  697. };
  698. template <typename TryCatch, typename Exception, typename Expr>
  699. struct catch_push_back<TryCatch, Exception, void, Expr, 9>
  700. {
  701. typedef
  702. typename proto::result_of::make_expr<
  703. phoenix::tag::catch_
  704. , proto::basic_default_domain
  705. , catch_exception<Exception>
  706. , Expr
  707. >::type
  708. catch_expr;
  709. typedef phoenix::expression::try_catch<
  710. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type
  711. , catch_expr> gen_type;
  712. typedef typename gen_type::type type;
  713. static type
  714. make(
  715. TryCatch const& try_catch
  716. , Expr const& catch_
  717. )
  718. {
  719. return
  720. gen_type::make(
  721. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch)
  722. , proto::make_expr<
  723. phoenix::tag::catch_
  724. , proto::basic_default_domain
  725. >(catch_exception<Exception>(), catch_)
  726. );
  727. }
  728. };
  729. template <typename TryCatch, typename Expr>
  730. struct catch_all_push_back<TryCatch, Expr, 9>
  731. {
  732. typedef
  733. typename proto::result_of::make_expr<
  734. phoenix::tag::catch_all
  735. , proto::basic_default_domain
  736. , Expr
  737. >::type
  738. catch_expr;
  739. typedef phoenix::expression::try_catch<
  740. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type
  741. , catch_expr> gen_type;
  742. typedef typename gen_type::type type;
  743. static type
  744. make(
  745. TryCatch const& try_catch
  746. , Expr const& catch_
  747. )
  748. {
  749. return
  750. gen_type::make(
  751. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch)
  752. , proto::make_expr<
  753. phoenix::tag::catch_all
  754. , proto::basic_default_domain
  755. >(catch_)
  756. );
  757. }
  758. };
  759. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  760. struct catch_push_back<TryCatch, Exception, Capture, Expr, 10>
  761. {
  762. typedef
  763. typename proto::result_of::make_expr<
  764. phoenix::tag::catch_
  765. , proto::basic_default_domain
  766. , catch_exception<Exception>
  767. , Capture
  768. , Expr
  769. >::type
  770. catch_expr;
  771. typedef phoenix::expression::try_catch<
  772. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type
  773. , catch_expr> gen_type;
  774. typedef typename gen_type::type type;
  775. static type
  776. make(
  777. TryCatch const& try_catch
  778. , Capture const& capture
  779. , Expr const& catch_
  780. )
  781. {
  782. return
  783. gen_type::make(
  784. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch)
  785. , proto::make_expr<
  786. phoenix::tag::catch_
  787. , proto::basic_default_domain
  788. >(catch_exception<Exception>(), capture, catch_)
  789. );
  790. }
  791. };
  792. template <typename TryCatch, typename Exception, typename Expr>
  793. struct catch_push_back<TryCatch, Exception, void, Expr, 10>
  794. {
  795. typedef
  796. typename proto::result_of::make_expr<
  797. phoenix::tag::catch_
  798. , proto::basic_default_domain
  799. , catch_exception<Exception>
  800. , Expr
  801. >::type
  802. catch_expr;
  803. typedef phoenix::expression::try_catch<
  804. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type
  805. , catch_expr> gen_type;
  806. typedef typename gen_type::type type;
  807. static type
  808. make(
  809. TryCatch const& try_catch
  810. , Expr const& catch_
  811. )
  812. {
  813. return
  814. gen_type::make(
  815. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch)
  816. , proto::make_expr<
  817. phoenix::tag::catch_
  818. , proto::basic_default_domain
  819. >(catch_exception<Exception>(), catch_)
  820. );
  821. }
  822. };
  823. template <typename TryCatch, typename Expr>
  824. struct catch_all_push_back<TryCatch, Expr, 10>
  825. {
  826. typedef
  827. typename proto::result_of::make_expr<
  828. phoenix::tag::catch_all
  829. , proto::basic_default_domain
  830. , Expr
  831. >::type
  832. catch_expr;
  833. typedef phoenix::expression::try_catch<
  834. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type
  835. , catch_expr> gen_type;
  836. typedef typename gen_type::type type;
  837. static type
  838. make(
  839. TryCatch const& try_catch
  840. , Expr const& catch_
  841. )
  842. {
  843. return
  844. gen_type::make(
  845. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch)
  846. , proto::make_expr<
  847. phoenix::tag::catch_all
  848. , proto::basic_default_domain
  849. >(catch_)
  850. );
  851. }
  852. };
  853. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  854. struct catch_push_back<TryCatch, Exception, Capture, Expr, 11>
  855. {
  856. typedef
  857. typename proto::result_of::make_expr<
  858. phoenix::tag::catch_
  859. , proto::basic_default_domain
  860. , catch_exception<Exception>
  861. , Capture
  862. , Expr
  863. >::type
  864. catch_expr;
  865. typedef phoenix::expression::try_catch<
  866. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type
  867. , catch_expr> gen_type;
  868. typedef typename gen_type::type type;
  869. static type
  870. make(
  871. TryCatch const& try_catch
  872. , Capture const& capture
  873. , Expr const& catch_
  874. )
  875. {
  876. return
  877. gen_type::make(
  878. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch)
  879. , proto::make_expr<
  880. phoenix::tag::catch_
  881. , proto::basic_default_domain
  882. >(catch_exception<Exception>(), capture, catch_)
  883. );
  884. }
  885. };
  886. template <typename TryCatch, typename Exception, typename Expr>
  887. struct catch_push_back<TryCatch, Exception, void, Expr, 11>
  888. {
  889. typedef
  890. typename proto::result_of::make_expr<
  891. phoenix::tag::catch_
  892. , proto::basic_default_domain
  893. , catch_exception<Exception>
  894. , Expr
  895. >::type
  896. catch_expr;
  897. typedef phoenix::expression::try_catch<
  898. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type
  899. , catch_expr> gen_type;
  900. typedef typename gen_type::type type;
  901. static type
  902. make(
  903. TryCatch const& try_catch
  904. , Expr const& catch_
  905. )
  906. {
  907. return
  908. gen_type::make(
  909. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch)
  910. , proto::make_expr<
  911. phoenix::tag::catch_
  912. , proto::basic_default_domain
  913. >(catch_exception<Exception>(), catch_)
  914. );
  915. }
  916. };
  917. template <typename TryCatch, typename Expr>
  918. struct catch_all_push_back<TryCatch, Expr, 11>
  919. {
  920. typedef
  921. typename proto::result_of::make_expr<
  922. phoenix::tag::catch_all
  923. , proto::basic_default_domain
  924. , Expr
  925. >::type
  926. catch_expr;
  927. typedef phoenix::expression::try_catch<
  928. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type
  929. , catch_expr> gen_type;
  930. typedef typename gen_type::type type;
  931. static type
  932. make(
  933. TryCatch const& try_catch
  934. , Expr const& catch_
  935. )
  936. {
  937. return
  938. gen_type::make(
  939. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch)
  940. , proto::make_expr<
  941. phoenix::tag::catch_all
  942. , proto::basic_default_domain
  943. >(catch_)
  944. );
  945. }
  946. };
  947. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  948. struct catch_push_back<TryCatch, Exception, Capture, Expr, 12>
  949. {
  950. typedef
  951. typename proto::result_of::make_expr<
  952. phoenix::tag::catch_
  953. , proto::basic_default_domain
  954. , catch_exception<Exception>
  955. , Capture
  956. , Expr
  957. >::type
  958. catch_expr;
  959. typedef phoenix::expression::try_catch<
  960. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type
  961. , catch_expr> gen_type;
  962. typedef typename gen_type::type type;
  963. static type
  964. make(
  965. TryCatch const& try_catch
  966. , Capture const& capture
  967. , Expr const& catch_
  968. )
  969. {
  970. return
  971. gen_type::make(
  972. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch)
  973. , proto::make_expr<
  974. phoenix::tag::catch_
  975. , proto::basic_default_domain
  976. >(catch_exception<Exception>(), capture, catch_)
  977. );
  978. }
  979. };
  980. template <typename TryCatch, typename Exception, typename Expr>
  981. struct catch_push_back<TryCatch, Exception, void, Expr, 12>
  982. {
  983. typedef
  984. typename proto::result_of::make_expr<
  985. phoenix::tag::catch_
  986. , proto::basic_default_domain
  987. , catch_exception<Exception>
  988. , Expr
  989. >::type
  990. catch_expr;
  991. typedef phoenix::expression::try_catch<
  992. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type
  993. , catch_expr> gen_type;
  994. typedef typename gen_type::type type;
  995. static type
  996. make(
  997. TryCatch const& try_catch
  998. , Expr const& catch_
  999. )
  1000. {
  1001. return
  1002. gen_type::make(
  1003. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch)
  1004. , proto::make_expr<
  1005. phoenix::tag::catch_
  1006. , proto::basic_default_domain
  1007. >(catch_exception<Exception>(), catch_)
  1008. );
  1009. }
  1010. };
  1011. template <typename TryCatch, typename Expr>
  1012. struct catch_all_push_back<TryCatch, Expr, 12>
  1013. {
  1014. typedef
  1015. typename proto::result_of::make_expr<
  1016. phoenix::tag::catch_all
  1017. , proto::basic_default_domain
  1018. , Expr
  1019. >::type
  1020. catch_expr;
  1021. typedef phoenix::expression::try_catch<
  1022. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type
  1023. , catch_expr> gen_type;
  1024. typedef typename gen_type::type type;
  1025. static type
  1026. make(
  1027. TryCatch const& try_catch
  1028. , Expr const& catch_
  1029. )
  1030. {
  1031. return
  1032. gen_type::make(
  1033. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch)
  1034. , proto::make_expr<
  1035. phoenix::tag::catch_all
  1036. , proto::basic_default_domain
  1037. >(catch_)
  1038. );
  1039. }
  1040. };
  1041. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1042. struct catch_push_back<TryCatch, Exception, Capture, Expr, 13>
  1043. {
  1044. typedef
  1045. typename proto::result_of::make_expr<
  1046. phoenix::tag::catch_
  1047. , proto::basic_default_domain
  1048. , catch_exception<Exception>
  1049. , Capture
  1050. , Expr
  1051. >::type
  1052. catch_expr;
  1053. typedef phoenix::expression::try_catch<
  1054. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type
  1055. , catch_expr> gen_type;
  1056. typedef typename gen_type::type type;
  1057. static type
  1058. make(
  1059. TryCatch const& try_catch
  1060. , Capture const& capture
  1061. , Expr const& catch_
  1062. )
  1063. {
  1064. return
  1065. gen_type::make(
  1066. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch)
  1067. , proto::make_expr<
  1068. phoenix::tag::catch_
  1069. , proto::basic_default_domain
  1070. >(catch_exception<Exception>(), capture, catch_)
  1071. );
  1072. }
  1073. };
  1074. template <typename TryCatch, typename Exception, typename Expr>
  1075. struct catch_push_back<TryCatch, Exception, void, Expr, 13>
  1076. {
  1077. typedef
  1078. typename proto::result_of::make_expr<
  1079. phoenix::tag::catch_
  1080. , proto::basic_default_domain
  1081. , catch_exception<Exception>
  1082. , Expr
  1083. >::type
  1084. catch_expr;
  1085. typedef phoenix::expression::try_catch<
  1086. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type
  1087. , catch_expr> gen_type;
  1088. typedef typename gen_type::type type;
  1089. static type
  1090. make(
  1091. TryCatch const& try_catch
  1092. , Expr const& catch_
  1093. )
  1094. {
  1095. return
  1096. gen_type::make(
  1097. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch)
  1098. , proto::make_expr<
  1099. phoenix::tag::catch_
  1100. , proto::basic_default_domain
  1101. >(catch_exception<Exception>(), catch_)
  1102. );
  1103. }
  1104. };
  1105. template <typename TryCatch, typename Expr>
  1106. struct catch_all_push_back<TryCatch, Expr, 13>
  1107. {
  1108. typedef
  1109. typename proto::result_of::make_expr<
  1110. phoenix::tag::catch_all
  1111. , proto::basic_default_domain
  1112. , Expr
  1113. >::type
  1114. catch_expr;
  1115. typedef phoenix::expression::try_catch<
  1116. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type
  1117. , catch_expr> gen_type;
  1118. typedef typename gen_type::type type;
  1119. static type
  1120. make(
  1121. TryCatch const& try_catch
  1122. , Expr const& catch_
  1123. )
  1124. {
  1125. return
  1126. gen_type::make(
  1127. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch)
  1128. , proto::make_expr<
  1129. phoenix::tag::catch_all
  1130. , proto::basic_default_domain
  1131. >(catch_)
  1132. );
  1133. }
  1134. };
  1135. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1136. struct catch_push_back<TryCatch, Exception, Capture, Expr, 14>
  1137. {
  1138. typedef
  1139. typename proto::result_of::make_expr<
  1140. phoenix::tag::catch_
  1141. , proto::basic_default_domain
  1142. , catch_exception<Exception>
  1143. , Capture
  1144. , Expr
  1145. >::type
  1146. catch_expr;
  1147. typedef phoenix::expression::try_catch<
  1148. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type
  1149. , catch_expr> gen_type;
  1150. typedef typename gen_type::type type;
  1151. static type
  1152. make(
  1153. TryCatch const& try_catch
  1154. , Capture const& capture
  1155. , Expr const& catch_
  1156. )
  1157. {
  1158. return
  1159. gen_type::make(
  1160. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch)
  1161. , proto::make_expr<
  1162. phoenix::tag::catch_
  1163. , proto::basic_default_domain
  1164. >(catch_exception<Exception>(), capture, catch_)
  1165. );
  1166. }
  1167. };
  1168. template <typename TryCatch, typename Exception, typename Expr>
  1169. struct catch_push_back<TryCatch, Exception, void, Expr, 14>
  1170. {
  1171. typedef
  1172. typename proto::result_of::make_expr<
  1173. phoenix::tag::catch_
  1174. , proto::basic_default_domain
  1175. , catch_exception<Exception>
  1176. , Expr
  1177. >::type
  1178. catch_expr;
  1179. typedef phoenix::expression::try_catch<
  1180. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type
  1181. , catch_expr> gen_type;
  1182. typedef typename gen_type::type type;
  1183. static type
  1184. make(
  1185. TryCatch const& try_catch
  1186. , Expr const& catch_
  1187. )
  1188. {
  1189. return
  1190. gen_type::make(
  1191. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch)
  1192. , proto::make_expr<
  1193. phoenix::tag::catch_
  1194. , proto::basic_default_domain
  1195. >(catch_exception<Exception>(), catch_)
  1196. );
  1197. }
  1198. };
  1199. template <typename TryCatch, typename Expr>
  1200. struct catch_all_push_back<TryCatch, Expr, 14>
  1201. {
  1202. typedef
  1203. typename proto::result_of::make_expr<
  1204. phoenix::tag::catch_all
  1205. , proto::basic_default_domain
  1206. , Expr
  1207. >::type
  1208. catch_expr;
  1209. typedef phoenix::expression::try_catch<
  1210. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type
  1211. , catch_expr> gen_type;
  1212. typedef typename gen_type::type type;
  1213. static type
  1214. make(
  1215. TryCatch const& try_catch
  1216. , Expr const& catch_
  1217. )
  1218. {
  1219. return
  1220. gen_type::make(
  1221. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch)
  1222. , proto::make_expr<
  1223. phoenix::tag::catch_all
  1224. , proto::basic_default_domain
  1225. >(catch_)
  1226. );
  1227. }
  1228. };
  1229. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1230. struct catch_push_back<TryCatch, Exception, Capture, Expr, 15>
  1231. {
  1232. typedef
  1233. typename proto::result_of::make_expr<
  1234. phoenix::tag::catch_
  1235. , proto::basic_default_domain
  1236. , catch_exception<Exception>
  1237. , Capture
  1238. , Expr
  1239. >::type
  1240. catch_expr;
  1241. typedef phoenix::expression::try_catch<
  1242. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type
  1243. , catch_expr> gen_type;
  1244. typedef typename gen_type::type type;
  1245. static type
  1246. make(
  1247. TryCatch const& try_catch
  1248. , Capture const& capture
  1249. , Expr const& catch_
  1250. )
  1251. {
  1252. return
  1253. gen_type::make(
  1254. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch)
  1255. , proto::make_expr<
  1256. phoenix::tag::catch_
  1257. , proto::basic_default_domain
  1258. >(catch_exception<Exception>(), capture, catch_)
  1259. );
  1260. }
  1261. };
  1262. template <typename TryCatch, typename Exception, typename Expr>
  1263. struct catch_push_back<TryCatch, Exception, void, Expr, 15>
  1264. {
  1265. typedef
  1266. typename proto::result_of::make_expr<
  1267. phoenix::tag::catch_
  1268. , proto::basic_default_domain
  1269. , catch_exception<Exception>
  1270. , Expr
  1271. >::type
  1272. catch_expr;
  1273. typedef phoenix::expression::try_catch<
  1274. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type
  1275. , catch_expr> gen_type;
  1276. typedef typename gen_type::type type;
  1277. static type
  1278. make(
  1279. TryCatch const& try_catch
  1280. , Expr const& catch_
  1281. )
  1282. {
  1283. return
  1284. gen_type::make(
  1285. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch)
  1286. , proto::make_expr<
  1287. phoenix::tag::catch_
  1288. , proto::basic_default_domain
  1289. >(catch_exception<Exception>(), catch_)
  1290. );
  1291. }
  1292. };
  1293. template <typename TryCatch, typename Expr>
  1294. struct catch_all_push_back<TryCatch, Expr, 15>
  1295. {
  1296. typedef
  1297. typename proto::result_of::make_expr<
  1298. phoenix::tag::catch_all
  1299. , proto::basic_default_domain
  1300. , Expr
  1301. >::type
  1302. catch_expr;
  1303. typedef phoenix::expression::try_catch<
  1304. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type
  1305. , catch_expr> gen_type;
  1306. typedef typename gen_type::type type;
  1307. static type
  1308. make(
  1309. TryCatch const& try_catch
  1310. , Expr const& catch_
  1311. )
  1312. {
  1313. return
  1314. gen_type::make(
  1315. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch)
  1316. , proto::make_expr<
  1317. phoenix::tag::catch_all
  1318. , proto::basic_default_domain
  1319. >(catch_)
  1320. );
  1321. }
  1322. };
  1323. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1324. struct catch_push_back<TryCatch, Exception, Capture, Expr, 16>
  1325. {
  1326. typedef
  1327. typename proto::result_of::make_expr<
  1328. phoenix::tag::catch_
  1329. , proto::basic_default_domain
  1330. , catch_exception<Exception>
  1331. , Capture
  1332. , Expr
  1333. >::type
  1334. catch_expr;
  1335. typedef phoenix::expression::try_catch<
  1336. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type
  1337. , catch_expr> gen_type;
  1338. typedef typename gen_type::type type;
  1339. static type
  1340. make(
  1341. TryCatch const& try_catch
  1342. , Capture const& capture
  1343. , Expr const& catch_
  1344. )
  1345. {
  1346. return
  1347. gen_type::make(
  1348. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch)
  1349. , proto::make_expr<
  1350. phoenix::tag::catch_
  1351. , proto::basic_default_domain
  1352. >(catch_exception<Exception>(), capture, catch_)
  1353. );
  1354. }
  1355. };
  1356. template <typename TryCatch, typename Exception, typename Expr>
  1357. struct catch_push_back<TryCatch, Exception, void, Expr, 16>
  1358. {
  1359. typedef
  1360. typename proto::result_of::make_expr<
  1361. phoenix::tag::catch_
  1362. , proto::basic_default_domain
  1363. , catch_exception<Exception>
  1364. , Expr
  1365. >::type
  1366. catch_expr;
  1367. typedef phoenix::expression::try_catch<
  1368. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type
  1369. , catch_expr> gen_type;
  1370. typedef typename gen_type::type type;
  1371. static type
  1372. make(
  1373. TryCatch const& try_catch
  1374. , Expr const& catch_
  1375. )
  1376. {
  1377. return
  1378. gen_type::make(
  1379. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch)
  1380. , proto::make_expr<
  1381. phoenix::tag::catch_
  1382. , proto::basic_default_domain
  1383. >(catch_exception<Exception>(), catch_)
  1384. );
  1385. }
  1386. };
  1387. template <typename TryCatch, typename Expr>
  1388. struct catch_all_push_back<TryCatch, Expr, 16>
  1389. {
  1390. typedef
  1391. typename proto::result_of::make_expr<
  1392. phoenix::tag::catch_all
  1393. , proto::basic_default_domain
  1394. , Expr
  1395. >::type
  1396. catch_expr;
  1397. typedef phoenix::expression::try_catch<
  1398. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type
  1399. , catch_expr> gen_type;
  1400. typedef typename gen_type::type type;
  1401. static type
  1402. make(
  1403. TryCatch const& try_catch
  1404. , Expr const& catch_
  1405. )
  1406. {
  1407. return
  1408. gen_type::make(
  1409. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch)
  1410. , proto::make_expr<
  1411. phoenix::tag::catch_all
  1412. , proto::basic_default_domain
  1413. >(catch_)
  1414. );
  1415. }
  1416. };
  1417. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1418. struct catch_push_back<TryCatch, Exception, Capture, Expr, 17>
  1419. {
  1420. typedef
  1421. typename proto::result_of::make_expr<
  1422. phoenix::tag::catch_
  1423. , proto::basic_default_domain
  1424. , catch_exception<Exception>
  1425. , Capture
  1426. , Expr
  1427. >::type
  1428. catch_expr;
  1429. typedef phoenix::expression::try_catch<
  1430. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type
  1431. , catch_expr> gen_type;
  1432. typedef typename gen_type::type type;
  1433. static type
  1434. make(
  1435. TryCatch const& try_catch
  1436. , Capture const& capture
  1437. , Expr const& catch_
  1438. )
  1439. {
  1440. return
  1441. gen_type::make(
  1442. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch)
  1443. , proto::make_expr<
  1444. phoenix::tag::catch_
  1445. , proto::basic_default_domain
  1446. >(catch_exception<Exception>(), capture, catch_)
  1447. );
  1448. }
  1449. };
  1450. template <typename TryCatch, typename Exception, typename Expr>
  1451. struct catch_push_back<TryCatch, Exception, void, Expr, 17>
  1452. {
  1453. typedef
  1454. typename proto::result_of::make_expr<
  1455. phoenix::tag::catch_
  1456. , proto::basic_default_domain
  1457. , catch_exception<Exception>
  1458. , Expr
  1459. >::type
  1460. catch_expr;
  1461. typedef phoenix::expression::try_catch<
  1462. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type
  1463. , catch_expr> gen_type;
  1464. typedef typename gen_type::type type;
  1465. static type
  1466. make(
  1467. TryCatch const& try_catch
  1468. , Expr const& catch_
  1469. )
  1470. {
  1471. return
  1472. gen_type::make(
  1473. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch)
  1474. , proto::make_expr<
  1475. phoenix::tag::catch_
  1476. , proto::basic_default_domain
  1477. >(catch_exception<Exception>(), catch_)
  1478. );
  1479. }
  1480. };
  1481. template <typename TryCatch, typename Expr>
  1482. struct catch_all_push_back<TryCatch, Expr, 17>
  1483. {
  1484. typedef
  1485. typename proto::result_of::make_expr<
  1486. phoenix::tag::catch_all
  1487. , proto::basic_default_domain
  1488. , Expr
  1489. >::type
  1490. catch_expr;
  1491. typedef phoenix::expression::try_catch<
  1492. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type
  1493. , catch_expr> gen_type;
  1494. typedef typename gen_type::type type;
  1495. static type
  1496. make(
  1497. TryCatch const& try_catch
  1498. , Expr const& catch_
  1499. )
  1500. {
  1501. return
  1502. gen_type::make(
  1503. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch)
  1504. , proto::make_expr<
  1505. phoenix::tag::catch_all
  1506. , proto::basic_default_domain
  1507. >(catch_)
  1508. );
  1509. }
  1510. };
  1511. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1512. struct catch_push_back<TryCatch, Exception, Capture, Expr, 18>
  1513. {
  1514. typedef
  1515. typename proto::result_of::make_expr<
  1516. phoenix::tag::catch_
  1517. , proto::basic_default_domain
  1518. , catch_exception<Exception>
  1519. , Capture
  1520. , Expr
  1521. >::type
  1522. catch_expr;
  1523. typedef phoenix::expression::try_catch<
  1524. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type
  1525. , catch_expr> gen_type;
  1526. typedef typename gen_type::type type;
  1527. static type
  1528. make(
  1529. TryCatch const& try_catch
  1530. , Capture const& capture
  1531. , Expr const& catch_
  1532. )
  1533. {
  1534. return
  1535. gen_type::make(
  1536. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch)
  1537. , proto::make_expr<
  1538. phoenix::tag::catch_
  1539. , proto::basic_default_domain
  1540. >(catch_exception<Exception>(), capture, catch_)
  1541. );
  1542. }
  1543. };
  1544. template <typename TryCatch, typename Exception, typename Expr>
  1545. struct catch_push_back<TryCatch, Exception, void, Expr, 18>
  1546. {
  1547. typedef
  1548. typename proto::result_of::make_expr<
  1549. phoenix::tag::catch_
  1550. , proto::basic_default_domain
  1551. , catch_exception<Exception>
  1552. , Expr
  1553. >::type
  1554. catch_expr;
  1555. typedef phoenix::expression::try_catch<
  1556. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type
  1557. , catch_expr> gen_type;
  1558. typedef typename gen_type::type type;
  1559. static type
  1560. make(
  1561. TryCatch const& try_catch
  1562. , Expr const& catch_
  1563. )
  1564. {
  1565. return
  1566. gen_type::make(
  1567. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch)
  1568. , proto::make_expr<
  1569. phoenix::tag::catch_
  1570. , proto::basic_default_domain
  1571. >(catch_exception<Exception>(), catch_)
  1572. );
  1573. }
  1574. };
  1575. template <typename TryCatch, typename Expr>
  1576. struct catch_all_push_back<TryCatch, Expr, 18>
  1577. {
  1578. typedef
  1579. typename proto::result_of::make_expr<
  1580. phoenix::tag::catch_all
  1581. , proto::basic_default_domain
  1582. , Expr
  1583. >::type
  1584. catch_expr;
  1585. typedef phoenix::expression::try_catch<
  1586. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type
  1587. , catch_expr> gen_type;
  1588. typedef typename gen_type::type type;
  1589. static type
  1590. make(
  1591. TryCatch const& try_catch
  1592. , Expr const& catch_
  1593. )
  1594. {
  1595. return
  1596. gen_type::make(
  1597. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch)
  1598. , proto::make_expr<
  1599. phoenix::tag::catch_all
  1600. , proto::basic_default_domain
  1601. >(catch_)
  1602. );
  1603. }
  1604. };
  1605. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1606. struct catch_push_back<TryCatch, Exception, Capture, Expr, 19>
  1607. {
  1608. typedef
  1609. typename proto::result_of::make_expr<
  1610. phoenix::tag::catch_
  1611. , proto::basic_default_domain
  1612. , catch_exception<Exception>
  1613. , Capture
  1614. , Expr
  1615. >::type
  1616. catch_expr;
  1617. typedef phoenix::expression::try_catch<
  1618. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type , typename proto::result_of::child_c<TryCatch, 18>::type
  1619. , catch_expr> gen_type;
  1620. typedef typename gen_type::type type;
  1621. static type
  1622. make(
  1623. TryCatch const& try_catch
  1624. , Capture const& capture
  1625. , Expr const& catch_
  1626. )
  1627. {
  1628. return
  1629. gen_type::make(
  1630. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch) , proto::child_c< 18>(try_catch)
  1631. , proto::make_expr<
  1632. phoenix::tag::catch_
  1633. , proto::basic_default_domain
  1634. >(catch_exception<Exception>(), capture, catch_)
  1635. );
  1636. }
  1637. };
  1638. template <typename TryCatch, typename Exception, typename Expr>
  1639. struct catch_push_back<TryCatch, Exception, void, Expr, 19>
  1640. {
  1641. typedef
  1642. typename proto::result_of::make_expr<
  1643. phoenix::tag::catch_
  1644. , proto::basic_default_domain
  1645. , catch_exception<Exception>
  1646. , Expr
  1647. >::type
  1648. catch_expr;
  1649. typedef phoenix::expression::try_catch<
  1650. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type , typename proto::result_of::child_c<TryCatch, 18>::type
  1651. , catch_expr> gen_type;
  1652. typedef typename gen_type::type type;
  1653. static type
  1654. make(
  1655. TryCatch const& try_catch
  1656. , Expr const& catch_
  1657. )
  1658. {
  1659. return
  1660. gen_type::make(
  1661. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch) , proto::child_c< 18>(try_catch)
  1662. , proto::make_expr<
  1663. phoenix::tag::catch_
  1664. , proto::basic_default_domain
  1665. >(catch_exception<Exception>(), catch_)
  1666. );
  1667. }
  1668. };
  1669. template <typename TryCatch, typename Expr>
  1670. struct catch_all_push_back<TryCatch, Expr, 19>
  1671. {
  1672. typedef
  1673. typename proto::result_of::make_expr<
  1674. phoenix::tag::catch_all
  1675. , proto::basic_default_domain
  1676. , Expr
  1677. >::type
  1678. catch_expr;
  1679. typedef phoenix::expression::try_catch<
  1680. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type , typename proto::result_of::child_c<TryCatch, 18>::type
  1681. , catch_expr> gen_type;
  1682. typedef typename gen_type::type type;
  1683. static type
  1684. make(
  1685. TryCatch const& try_catch
  1686. , Expr const& catch_
  1687. )
  1688. {
  1689. return
  1690. gen_type::make(
  1691. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch) , proto::child_c< 18>(try_catch)
  1692. , proto::make_expr<
  1693. phoenix::tag::catch_all
  1694. , proto::basic_default_domain
  1695. >(catch_)
  1696. );
  1697. }
  1698. };
  1699. template <typename TryCatch, typename Exception, typename Capture, typename Expr>
  1700. struct catch_push_back<TryCatch, Exception, Capture, Expr, 20>
  1701. {
  1702. typedef
  1703. typename proto::result_of::make_expr<
  1704. phoenix::tag::catch_
  1705. , proto::basic_default_domain
  1706. , catch_exception<Exception>
  1707. , Capture
  1708. , Expr
  1709. >::type
  1710. catch_expr;
  1711. typedef phoenix::expression::try_catch<
  1712. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type , typename proto::result_of::child_c<TryCatch, 18>::type , typename proto::result_of::child_c<TryCatch, 19>::type
  1713. , catch_expr> gen_type;
  1714. typedef typename gen_type::type type;
  1715. static type
  1716. make(
  1717. TryCatch const& try_catch
  1718. , Capture const& capture
  1719. , Expr const& catch_
  1720. )
  1721. {
  1722. return
  1723. gen_type::make(
  1724. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch) , proto::child_c< 18>(try_catch) , proto::child_c< 19>(try_catch)
  1725. , proto::make_expr<
  1726. phoenix::tag::catch_
  1727. , proto::basic_default_domain
  1728. >(catch_exception<Exception>(), capture, catch_)
  1729. );
  1730. }
  1731. };
  1732. template <typename TryCatch, typename Exception, typename Expr>
  1733. struct catch_push_back<TryCatch, Exception, void, Expr, 20>
  1734. {
  1735. typedef
  1736. typename proto::result_of::make_expr<
  1737. phoenix::tag::catch_
  1738. , proto::basic_default_domain
  1739. , catch_exception<Exception>
  1740. , Expr
  1741. >::type
  1742. catch_expr;
  1743. typedef phoenix::expression::try_catch<
  1744. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type , typename proto::result_of::child_c<TryCatch, 18>::type , typename proto::result_of::child_c<TryCatch, 19>::type
  1745. , catch_expr> gen_type;
  1746. typedef typename gen_type::type type;
  1747. static type
  1748. make(
  1749. TryCatch const& try_catch
  1750. , Expr const& catch_
  1751. )
  1752. {
  1753. return
  1754. gen_type::make(
  1755. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch) , proto::child_c< 18>(try_catch) , proto::child_c< 19>(try_catch)
  1756. , proto::make_expr<
  1757. phoenix::tag::catch_
  1758. , proto::basic_default_domain
  1759. >(catch_exception<Exception>(), catch_)
  1760. );
  1761. }
  1762. };
  1763. template <typename TryCatch, typename Expr>
  1764. struct catch_all_push_back<TryCatch, Expr, 20>
  1765. {
  1766. typedef
  1767. typename proto::result_of::make_expr<
  1768. phoenix::tag::catch_all
  1769. , proto::basic_default_domain
  1770. , Expr
  1771. >::type
  1772. catch_expr;
  1773. typedef phoenix::expression::try_catch<
  1774. typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type , typename proto::result_of::child_c<TryCatch, 2>::type , typename proto::result_of::child_c<TryCatch, 3>::type , typename proto::result_of::child_c<TryCatch, 4>::type , typename proto::result_of::child_c<TryCatch, 5>::type , typename proto::result_of::child_c<TryCatch, 6>::type , typename proto::result_of::child_c<TryCatch, 7>::type , typename proto::result_of::child_c<TryCatch, 8>::type , typename proto::result_of::child_c<TryCatch, 9>::type , typename proto::result_of::child_c<TryCatch, 10>::type , typename proto::result_of::child_c<TryCatch, 11>::type , typename proto::result_of::child_c<TryCatch, 12>::type , typename proto::result_of::child_c<TryCatch, 13>::type , typename proto::result_of::child_c<TryCatch, 14>::type , typename proto::result_of::child_c<TryCatch, 15>::type , typename proto::result_of::child_c<TryCatch, 16>::type , typename proto::result_of::child_c<TryCatch, 17>::type , typename proto::result_of::child_c<TryCatch, 18>::type , typename proto::result_of::child_c<TryCatch, 19>::type
  1775. , catch_expr> gen_type;
  1776. typedef typename gen_type::type type;
  1777. static type
  1778. make(
  1779. TryCatch const& try_catch
  1780. , Expr const& catch_
  1781. )
  1782. {
  1783. return
  1784. gen_type::make(
  1785. proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch) , proto::child_c< 4>(try_catch) , proto::child_c< 5>(try_catch) , proto::child_c< 6>(try_catch) , proto::child_c< 7>(try_catch) , proto::child_c< 8>(try_catch) , proto::child_c< 9>(try_catch) , proto::child_c< 10>(try_catch) , proto::child_c< 11>(try_catch) , proto::child_c< 12>(try_catch) , proto::child_c< 13>(try_catch) , proto::child_c< 14>(try_catch) , proto::child_c< 15>(try_catch) , proto::child_c< 16>(try_catch) , proto::child_c< 17>(try_catch) , proto::child_c< 18>(try_catch) , proto::child_c< 19>(try_catch)
  1786. , proto::make_expr<
  1787. phoenix::tag::catch_all
  1788. , proto::basic_default_domain
  1789. >(catch_)
  1790. );
  1791. }
  1792. };