1 /*==============================================================================
2     Copyright (c) 2005-2010 Joel de Guzman
3     Copyright (c) 2010 Thomas Heller
4 
5     Distributed under the Boost Software License, Version 1.0. (See accompanying
6     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8 
9 
10 
11 
12 
13 
14 
15         template <typename TryCatch, typename Exception, typename Expr>
16         struct catch_push_back<TryCatch, Exception, Expr, 2>
17         {
18             typedef
19                 typename proto::result_of::make_expr<
20                     phoenix::tag::catch_
21                   , proto::basic_default_domain
22                   , catch_exception<Exception>
23                   , Expr
24                 >::type
25                 catch_expr;
26             typedef phoenix::expression::try_catch<
27                 typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
28               , catch_expr> gen_type;
29             typedef typename gen_type::type type;
30             static type
makecatch_push_back31             make(
32                 TryCatch const& try_catch
33               , Expr const& catch_
34             )
35             {
36                 return
37                     gen_type::make(
38                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
39                       , proto::make_expr<
40                             phoenix::tag::catch_
41                           , proto::basic_default_domain
42                         >(catch_exception<Exception>(), catch_)
43                     );
44             }
45         };
46 
47         template <typename TryCatch, typename Expr>
48         struct catch_all_push_back<TryCatch, Expr, 2>
49         {
50             typedef
51                 typename proto::result_of::make_expr<
52                     phoenix::tag::catch_all
53                   , proto::basic_default_domain
54                   , Expr
55                 >::type
56                 catch_expr;
57             typedef phoenix::expression::try_catch<
58                 typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
59               , catch_expr> gen_type;
60             typedef typename gen_type::type type;
61             static type
makecatch_all_push_back62             make(
63                 TryCatch const& try_catch
64               , Expr const& catch_
65             )
66             {
67                 return
68                     gen_type::make(
69                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
70                       , proto::make_expr<
71                             phoenix::tag::catch_all
72                           , proto::basic_default_domain
73                         >(catch_)
74                     );
75             }
76         };
77 
78 
79 
80 
81 
82 
83 
84         template <typename TryCatch, typename Exception, typename Expr>
85         struct catch_push_back<TryCatch, Exception, Expr, 3>
86         {
87             typedef
88                 typename proto::result_of::make_expr<
89                     phoenix::tag::catch_
90                   , proto::basic_default_domain
91                   , catch_exception<Exception>
92                   , Expr
93                 >::type
94                 catch_expr;
95             typedef phoenix::expression::try_catch<
96                 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
97               , catch_expr> gen_type;
98             typedef typename gen_type::type type;
99             static type
makecatch_push_back100             make(
101                 TryCatch const& try_catch
102               , Expr const& catch_
103             )
104             {
105                 return
106                     gen_type::make(
107                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
108                       , proto::make_expr<
109                             phoenix::tag::catch_
110                           , proto::basic_default_domain
111                         >(catch_exception<Exception>(), catch_)
112                     );
113             }
114         };
115 
116         template <typename TryCatch, typename Expr>
117         struct catch_all_push_back<TryCatch, Expr, 3>
118         {
119             typedef
120                 typename proto::result_of::make_expr<
121                     phoenix::tag::catch_all
122                   , proto::basic_default_domain
123                   , Expr
124                 >::type
125                 catch_expr;
126             typedef phoenix::expression::try_catch<
127                 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
128               , catch_expr> gen_type;
129             typedef typename gen_type::type type;
130             static type
makecatch_all_push_back131             make(
132                 TryCatch const& try_catch
133               , Expr const& catch_
134             )
135             {
136                 return
137                     gen_type::make(
138                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
139                       , proto::make_expr<
140                             phoenix::tag::catch_all
141                           , proto::basic_default_domain
142                         >(catch_)
143                     );
144             }
145         };
146 
147 
148 
149 
150 
151 
152 
153         template <typename TryCatch, typename Exception, typename Expr>
154         struct catch_push_back<TryCatch, Exception, Expr, 4>
155         {
156             typedef
157                 typename proto::result_of::make_expr<
158                     phoenix::tag::catch_
159                   , proto::basic_default_domain
160                   , catch_exception<Exception>
161                   , Expr
162                 >::type
163                 catch_expr;
164             typedef phoenix::expression::try_catch<
165                 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
166               , catch_expr> gen_type;
167             typedef typename gen_type::type type;
168             static type
makecatch_push_back169             make(
170                 TryCatch const& try_catch
171               , Expr const& catch_
172             )
173             {
174                 return
175                     gen_type::make(
176                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
177                       , proto::make_expr<
178                             phoenix::tag::catch_
179                           , proto::basic_default_domain
180                         >(catch_exception<Exception>(), catch_)
181                     );
182             }
183         };
184 
185         template <typename TryCatch, typename Expr>
186         struct catch_all_push_back<TryCatch, Expr, 4>
187         {
188             typedef
189                 typename proto::result_of::make_expr<
190                     phoenix::tag::catch_all
191                   , proto::basic_default_domain
192                   , Expr
193                 >::type
194                 catch_expr;
195             typedef phoenix::expression::try_catch<
196                 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
197               , catch_expr> gen_type;
198             typedef typename gen_type::type type;
199             static type
makecatch_all_push_back200             make(
201                 TryCatch const& try_catch
202               , Expr const& catch_
203             )
204             {
205                 return
206                     gen_type::make(
207                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
208                       , proto::make_expr<
209                             phoenix::tag::catch_all
210                           , proto::basic_default_domain
211                         >(catch_)
212                     );
213             }
214         };
215 
216 
217 
218 
219 
220 
221 
222         template <typename TryCatch, typename Exception, typename Expr>
223         struct catch_push_back<TryCatch, Exception, Expr, 5>
224         {
225             typedef
226                 typename proto::result_of::make_expr<
227                     phoenix::tag::catch_
228                   , proto::basic_default_domain
229                   , catch_exception<Exception>
230                   , Expr
231                 >::type
232                 catch_expr;
233             typedef phoenix::expression::try_catch<
234                 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
235               , catch_expr> gen_type;
236             typedef typename gen_type::type type;
237             static type
makecatch_push_back238             make(
239                 TryCatch const& try_catch
240               , Expr const& catch_
241             )
242             {
243                 return
244                     gen_type::make(
245                         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)
246                       , proto::make_expr<
247                             phoenix::tag::catch_
248                           , proto::basic_default_domain
249                         >(catch_exception<Exception>(), catch_)
250                     );
251             }
252         };
253 
254         template <typename TryCatch, typename Expr>
255         struct catch_all_push_back<TryCatch, Expr, 5>
256         {
257             typedef
258                 typename proto::result_of::make_expr<
259                     phoenix::tag::catch_all
260                   , proto::basic_default_domain
261                   , Expr
262                 >::type
263                 catch_expr;
264             typedef phoenix::expression::try_catch<
265                 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
266               , catch_expr> gen_type;
267             typedef typename gen_type::type type;
268             static type
makecatch_all_push_back269             make(
270                 TryCatch const& try_catch
271               , Expr const& catch_
272             )
273             {
274                 return
275                     gen_type::make(
276                         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)
277                       , proto::make_expr<
278                             phoenix::tag::catch_all
279                           , proto::basic_default_domain
280                         >(catch_)
281                     );
282             }
283         };
284 
285 
286 
287 
288 
289 
290 
291         template <typename TryCatch, typename Exception, typename Expr>
292         struct catch_push_back<TryCatch, Exception, Expr, 6>
293         {
294             typedef
295                 typename proto::result_of::make_expr<
296                     phoenix::tag::catch_
297                   , proto::basic_default_domain
298                   , catch_exception<Exception>
299                   , Expr
300                 >::type
301                 catch_expr;
302             typedef phoenix::expression::try_catch<
303                 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
304               , catch_expr> gen_type;
305             typedef typename gen_type::type type;
306             static type
makecatch_push_back307             make(
308                 TryCatch const& try_catch
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) , proto::child_c< 5>(try_catch)
315                       , proto::make_expr<
316                             phoenix::tag::catch_
317                           , proto::basic_default_domain
318                         >(catch_exception<Exception>(), catch_)
319                     );
320             }
321         };
322 
323         template <typename TryCatch, typename Expr>
324         struct catch_all_push_back<TryCatch, Expr, 6>
325         {
326             typedef
327                 typename proto::result_of::make_expr<
328                     phoenix::tag::catch_all
329                   , proto::basic_default_domain
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 , typename proto::result_of::child_c<TryCatch, 5>::type
335               , catch_expr> gen_type;
336             typedef typename gen_type::type type;
337             static type
makecatch_all_push_back338             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) , proto::child_c< 5>(try_catch)
346                       , proto::make_expr<
347                             phoenix::tag::catch_all
348                           , proto::basic_default_domain
349                         >(catch_)
350                     );
351             }
352         };
353 
354 
355 
356 
357 
358 
359 
360         template <typename TryCatch, typename Exception, typename Expr>
361         struct catch_push_back<TryCatch, Exception, Expr, 7>
362         {
363             typedef
364                 typename proto::result_of::make_expr<
365                     phoenix::tag::catch_
366                   , proto::basic_default_domain
367                   , catch_exception<Exception>
368                   , Expr
369                 >::type
370                 catch_expr;
371             typedef phoenix::expression::try_catch<
372                 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
373               , catch_expr> gen_type;
374             typedef typename gen_type::type type;
375             static type
makecatch_push_back376             make(
377                 TryCatch const& try_catch
378               , Expr const& catch_
379             )
380             {
381                 return
382                     gen_type::make(
383                         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)
384                       , proto::make_expr<
385                             phoenix::tag::catch_
386                           , proto::basic_default_domain
387                         >(catch_exception<Exception>(), catch_)
388                     );
389             }
390         };
391 
392         template <typename TryCatch, typename Expr>
393         struct catch_all_push_back<TryCatch, Expr, 7>
394         {
395             typedef
396                 typename proto::result_of::make_expr<
397                     phoenix::tag::catch_all
398                   , proto::basic_default_domain
399                   , Expr
400                 >::type
401                 catch_expr;
402             typedef phoenix::expression::try_catch<
403                 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
404               , catch_expr> gen_type;
405             typedef typename gen_type::type type;
406             static type
makecatch_all_push_back407             make(
408                 TryCatch const& try_catch
409               , Expr const& catch_
410             )
411             {
412                 return
413                     gen_type::make(
414                         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)
415                       , proto::make_expr<
416                             phoenix::tag::catch_all
417                           , proto::basic_default_domain
418                         >(catch_)
419                     );
420             }
421         };
422 
423 
424 
425 
426 
427 
428 
429         template <typename TryCatch, typename Exception, typename Expr>
430         struct catch_push_back<TryCatch, Exception, Expr, 8>
431         {
432             typedef
433                 typename proto::result_of::make_expr<
434                     phoenix::tag::catch_
435                   , proto::basic_default_domain
436                   , catch_exception<Exception>
437                   , Expr
438                 >::type
439                 catch_expr;
440             typedef phoenix::expression::try_catch<
441                 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
442               , catch_expr> gen_type;
443             typedef typename gen_type::type type;
444             static type
makecatch_push_back445             make(
446                 TryCatch const& try_catch
447               , Expr const& catch_
448             )
449             {
450                 return
451                     gen_type::make(
452                         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)
453                       , proto::make_expr<
454                             phoenix::tag::catch_
455                           , proto::basic_default_domain
456                         >(catch_exception<Exception>(), catch_)
457                     );
458             }
459         };
460 
461         template <typename TryCatch, typename Expr>
462         struct catch_all_push_back<TryCatch, Expr, 8>
463         {
464             typedef
465                 typename proto::result_of::make_expr<
466                     phoenix::tag::catch_all
467                   , proto::basic_default_domain
468                   , Expr
469                 >::type
470                 catch_expr;
471             typedef phoenix::expression::try_catch<
472                 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
473               , catch_expr> gen_type;
474             typedef typename gen_type::type type;
475             static type
makecatch_all_push_back476             make(
477                 TryCatch const& try_catch
478               , Expr const& catch_
479             )
480             {
481                 return
482                     gen_type::make(
483                         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)
484                       , proto::make_expr<
485                             phoenix::tag::catch_all
486                           , proto::basic_default_domain
487                         >(catch_)
488                     );
489             }
490         };
491 
492 
493 
494 
495 
496 
497 
498         template <typename TryCatch, typename Exception, typename Expr>
499         struct catch_push_back<TryCatch, Exception, Expr, 9>
500         {
501             typedef
502                 typename proto::result_of::make_expr<
503                     phoenix::tag::catch_
504                   , proto::basic_default_domain
505                   , catch_exception<Exception>
506                   , Expr
507                 >::type
508                 catch_expr;
509             typedef phoenix::expression::try_catch<
510                 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
511               , catch_expr> gen_type;
512             typedef typename gen_type::type type;
513             static type
makecatch_push_back514             make(
515                 TryCatch const& try_catch
516               , Expr const& catch_
517             )
518             {
519                 return
520                     gen_type::make(
521                         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)
522                       , proto::make_expr<
523                             phoenix::tag::catch_
524                           , proto::basic_default_domain
525                         >(catch_exception<Exception>(), catch_)
526                     );
527             }
528         };
529 
530         template <typename TryCatch, typename Expr>
531         struct catch_all_push_back<TryCatch, Expr, 9>
532         {
533             typedef
534                 typename proto::result_of::make_expr<
535                     phoenix::tag::catch_all
536                   , proto::basic_default_domain
537                   , Expr
538                 >::type
539                 catch_expr;
540             typedef phoenix::expression::try_catch<
541                 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
542               , catch_expr> gen_type;
543             typedef typename gen_type::type type;
544             static type
makecatch_all_push_back545             make(
546                 TryCatch const& try_catch
547               , Expr const& catch_
548             )
549             {
550                 return
551                     gen_type::make(
552                         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)
553                       , proto::make_expr<
554                             phoenix::tag::catch_all
555                           , proto::basic_default_domain
556                         >(catch_)
557                     );
558             }
559         };
560 
561 
562 
563 
564 
565 
566 
567         template <typename TryCatch, typename Exception, typename Expr>
568         struct catch_push_back<TryCatch, Exception, Expr, 10>
569         {
570             typedef
571                 typename proto::result_of::make_expr<
572                     phoenix::tag::catch_
573                   , proto::basic_default_domain
574                   , catch_exception<Exception>
575                   , Expr
576                 >::type
577                 catch_expr;
578             typedef phoenix::expression::try_catch<
579                 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
580               , catch_expr> gen_type;
581             typedef typename gen_type::type type;
582             static type
makecatch_push_back583             make(
584                 TryCatch const& try_catch
585               , Expr const& catch_
586             )
587             {
588                 return
589                     gen_type::make(
590                         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)
591                       , proto::make_expr<
592                             phoenix::tag::catch_
593                           , proto::basic_default_domain
594                         >(catch_exception<Exception>(), catch_)
595                     );
596             }
597         };
598 
599         template <typename TryCatch, typename Expr>
600         struct catch_all_push_back<TryCatch, Expr, 10>
601         {
602             typedef
603                 typename proto::result_of::make_expr<
604                     phoenix::tag::catch_all
605                   , proto::basic_default_domain
606                   , Expr
607                 >::type
608                 catch_expr;
609             typedef phoenix::expression::try_catch<
610                 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
611               , catch_expr> gen_type;
612             typedef typename gen_type::type type;
613             static type
makecatch_all_push_back614             make(
615                 TryCatch const& try_catch
616               , Expr const& catch_
617             )
618             {
619                 return
620                     gen_type::make(
621                         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)
622                       , proto::make_expr<
623                             phoenix::tag::catch_all
624                           , proto::basic_default_domain
625                         >(catch_)
626                     );
627             }
628         };
629 
630