Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:46:34

0001 /*==============================================================================
0002     Copyright (c) 2005-2010 Joel de Guzman
0003     Copyright (c) 2010 Thomas Heller
0004 
0005     Distributed under the Boost Software License, Version 1.0. (See accompanying
0006     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0007 ==============================================================================*/
0008     
0009     
0010     
0011     
0012     
0013     
0014     
0015         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0016         struct catch_push_back<TryCatch, Exception, Capture, Expr, 2>
0017         {
0018             typedef
0019                 typename proto::result_of::make_expr<
0020                     phoenix::tag::catch_
0021                   , proto::basic_default_domain
0022                   , catch_exception<Exception>
0023                   , Capture
0024                   , Expr
0025                 >::type
0026                 catch_expr;
0027             typedef phoenix::expression::try_catch<
0028                 typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
0029               , catch_expr> gen_type;
0030             typedef typename gen_type::type type;
0031             static type
0032             make(
0033                 TryCatch const& try_catch
0034               , Capture const& capture
0035               , Expr const& catch_
0036             )
0037             {
0038                 return
0039                     gen_type::make(
0040                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
0041                       , proto::make_expr<
0042                             phoenix::tag::catch_
0043                           , proto::basic_default_domain
0044                         >(catch_exception<Exception>(), capture, catch_)
0045                     );
0046             }
0047         };
0048         template <typename TryCatch, typename Exception, typename Expr>
0049         struct catch_push_back<TryCatch, Exception, void, Expr, 2>
0050         {
0051             typedef
0052                 typename proto::result_of::make_expr<
0053                     phoenix::tag::catch_
0054                   , proto::basic_default_domain
0055                   , catch_exception<Exception>
0056                   , Expr
0057                 >::type
0058                 catch_expr;
0059             typedef phoenix::expression::try_catch<
0060                 typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
0061               , catch_expr> gen_type;
0062             typedef typename gen_type::type type;
0063             static type
0064             make(
0065                 TryCatch const& try_catch
0066               , Expr const& catch_
0067             )
0068             {
0069                 return
0070                     gen_type::make(
0071                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
0072                       , proto::make_expr<
0073                             phoenix::tag::catch_
0074                           , proto::basic_default_domain
0075                         >(catch_exception<Exception>(), catch_)
0076                     );
0077             }
0078         };
0079         template <typename TryCatch, typename Expr>
0080         struct catch_all_push_back<TryCatch, Expr, 2>
0081         {
0082             typedef
0083                 typename proto::result_of::make_expr<
0084                     phoenix::tag::catch_all
0085                   , proto::basic_default_domain
0086                   , Expr
0087                 >::type
0088                 catch_expr;
0089             typedef phoenix::expression::try_catch<
0090                 typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
0091               , catch_expr> gen_type;
0092             typedef typename gen_type::type type;
0093             static type
0094             make(
0095                 TryCatch const& try_catch
0096               , Expr const& catch_
0097             )
0098             {
0099                 return
0100                     gen_type::make(
0101                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
0102                       , proto::make_expr<
0103                             phoenix::tag::catch_all
0104                           , proto::basic_default_domain
0105                         >(catch_)
0106                     );
0107             }
0108         };
0109     
0110     
0111     
0112     
0113     
0114     
0115     
0116         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0117         struct catch_push_back<TryCatch, Exception, Capture, Expr, 3>
0118         {
0119             typedef
0120                 typename proto::result_of::make_expr<
0121                     phoenix::tag::catch_
0122                   , proto::basic_default_domain
0123                   , catch_exception<Exception>
0124                   , Capture
0125                   , Expr
0126                 >::type
0127                 catch_expr;
0128             typedef phoenix::expression::try_catch<
0129                 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
0130               , catch_expr> gen_type;
0131             typedef typename gen_type::type type;
0132             static type
0133             make(
0134                 TryCatch const& try_catch
0135               , Capture const& capture
0136               , Expr const& catch_
0137             )
0138             {
0139                 return
0140                     gen_type::make(
0141                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
0142                       , proto::make_expr<
0143                             phoenix::tag::catch_
0144                           , proto::basic_default_domain
0145                         >(catch_exception<Exception>(), capture, catch_)
0146                     );
0147             }
0148         };
0149         template <typename TryCatch, typename Exception, typename Expr>
0150         struct catch_push_back<TryCatch, Exception, void, Expr, 3>
0151         {
0152             typedef
0153                 typename proto::result_of::make_expr<
0154                     phoenix::tag::catch_
0155                   , proto::basic_default_domain
0156                   , catch_exception<Exception>
0157                   , Expr
0158                 >::type
0159                 catch_expr;
0160             typedef phoenix::expression::try_catch<
0161                 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
0162               , catch_expr> gen_type;
0163             typedef typename gen_type::type type;
0164             static type
0165             make(
0166                 TryCatch const& try_catch
0167               , Expr const& catch_
0168             )
0169             {
0170                 return
0171                     gen_type::make(
0172                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
0173                       , proto::make_expr<
0174                             phoenix::tag::catch_
0175                           , proto::basic_default_domain
0176                         >(catch_exception<Exception>(), catch_)
0177                     );
0178             }
0179         };
0180         template <typename TryCatch, typename Expr>
0181         struct catch_all_push_back<TryCatch, Expr, 3>
0182         {
0183             typedef
0184                 typename proto::result_of::make_expr<
0185                     phoenix::tag::catch_all
0186                   , proto::basic_default_domain
0187                   , Expr
0188                 >::type
0189                 catch_expr;
0190             typedef phoenix::expression::try_catch<
0191                 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
0192               , catch_expr> gen_type;
0193             typedef typename gen_type::type type;
0194             static type
0195             make(
0196                 TryCatch const& try_catch
0197               , Expr const& catch_
0198             )
0199             {
0200                 return
0201                     gen_type::make(
0202                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
0203                       , proto::make_expr<
0204                             phoenix::tag::catch_all
0205                           , proto::basic_default_domain
0206                         >(catch_)
0207                     );
0208             }
0209         };
0210     
0211     
0212     
0213     
0214     
0215     
0216     
0217         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0218         struct catch_push_back<TryCatch, Exception, Capture, Expr, 4>
0219         {
0220             typedef
0221                 typename proto::result_of::make_expr<
0222                     phoenix::tag::catch_
0223                   , proto::basic_default_domain
0224                   , catch_exception<Exception>
0225                   , Capture
0226                   , Expr
0227                 >::type
0228                 catch_expr;
0229             typedef phoenix::expression::try_catch<
0230                 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
0231               , catch_expr> gen_type;
0232             typedef typename gen_type::type type;
0233             static type
0234             make(
0235                 TryCatch const& try_catch
0236               , Capture const& capture
0237               , Expr const& catch_
0238             )
0239             {
0240                 return
0241                     gen_type::make(
0242                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
0243                       , proto::make_expr<
0244                             phoenix::tag::catch_
0245                           , proto::basic_default_domain
0246                         >(catch_exception<Exception>(), capture, catch_)
0247                     );
0248             }
0249         };
0250         template <typename TryCatch, typename Exception, typename Expr>
0251         struct catch_push_back<TryCatch, Exception, void, Expr, 4>
0252         {
0253             typedef
0254                 typename proto::result_of::make_expr<
0255                     phoenix::tag::catch_
0256                   , proto::basic_default_domain
0257                   , catch_exception<Exception>
0258                   , Expr
0259                 >::type
0260                 catch_expr;
0261             typedef phoenix::expression::try_catch<
0262                 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
0263               , catch_expr> gen_type;
0264             typedef typename gen_type::type type;
0265             static type
0266             make(
0267                 TryCatch const& try_catch
0268               , Expr const& catch_
0269             )
0270             {
0271                 return
0272                     gen_type::make(
0273                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
0274                       , proto::make_expr<
0275                             phoenix::tag::catch_
0276                           , proto::basic_default_domain
0277                         >(catch_exception<Exception>(), catch_)
0278                     );
0279             }
0280         };
0281         template <typename TryCatch, typename Expr>
0282         struct catch_all_push_back<TryCatch, Expr, 4>
0283         {
0284             typedef
0285                 typename proto::result_of::make_expr<
0286                     phoenix::tag::catch_all
0287                   , proto::basic_default_domain
0288                   , Expr
0289                 >::type
0290                 catch_expr;
0291             typedef phoenix::expression::try_catch<
0292                 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
0293               , catch_expr> gen_type;
0294             typedef typename gen_type::type type;
0295             static type
0296             make(
0297                 TryCatch const& try_catch
0298               , Expr const& catch_
0299             )
0300             {
0301                 return
0302                     gen_type::make(
0303                         proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch) , proto::child_c< 3>(try_catch)
0304                       , proto::make_expr<
0305                             phoenix::tag::catch_all
0306                           , proto::basic_default_domain
0307                         >(catch_)
0308                     );
0309             }
0310         };
0311     
0312     
0313     
0314     
0315     
0316     
0317     
0318         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0319         struct catch_push_back<TryCatch, Exception, Capture, Expr, 5>
0320         {
0321             typedef
0322                 typename proto::result_of::make_expr<
0323                     phoenix::tag::catch_
0324                   , proto::basic_default_domain
0325                   , catch_exception<Exception>
0326                   , Capture
0327                   , Expr
0328                 >::type
0329                 catch_expr;
0330             typedef phoenix::expression::try_catch<
0331                 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
0332               , catch_expr> gen_type;
0333             typedef typename gen_type::type type;
0334             static type
0335             make(
0336                 TryCatch const& try_catch
0337               , Capture const& capture
0338               , Expr const& catch_
0339             )
0340             {
0341                 return
0342                     gen_type::make(
0343                         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)
0344                       , proto::make_expr<
0345                             phoenix::tag::catch_
0346                           , proto::basic_default_domain
0347                         >(catch_exception<Exception>(), capture, catch_)
0348                     );
0349             }
0350         };
0351         template <typename TryCatch, typename Exception, typename Expr>
0352         struct catch_push_back<TryCatch, Exception, void, Expr, 5>
0353         {
0354             typedef
0355                 typename proto::result_of::make_expr<
0356                     phoenix::tag::catch_
0357                   , proto::basic_default_domain
0358                   , catch_exception<Exception>
0359                   , Expr
0360                 >::type
0361                 catch_expr;
0362             typedef phoenix::expression::try_catch<
0363                 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
0364               , catch_expr> gen_type;
0365             typedef typename gen_type::type type;
0366             static type
0367             make(
0368                 TryCatch const& try_catch
0369               , Expr const& catch_
0370             )
0371             {
0372                 return
0373                     gen_type::make(
0374                         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)
0375                       , proto::make_expr<
0376                             phoenix::tag::catch_
0377                           , proto::basic_default_domain
0378                         >(catch_exception<Exception>(), catch_)
0379                     );
0380             }
0381         };
0382         template <typename TryCatch, typename Expr>
0383         struct catch_all_push_back<TryCatch, Expr, 5>
0384         {
0385             typedef
0386                 typename proto::result_of::make_expr<
0387                     phoenix::tag::catch_all
0388                   , proto::basic_default_domain
0389                   , Expr
0390                 >::type
0391                 catch_expr;
0392             typedef phoenix::expression::try_catch<
0393                 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
0394               , catch_expr> gen_type;
0395             typedef typename gen_type::type type;
0396             static type
0397             make(
0398                 TryCatch const& try_catch
0399               , Expr const& catch_
0400             )
0401             {
0402                 return
0403                     gen_type::make(
0404                         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)
0405                       , proto::make_expr<
0406                             phoenix::tag::catch_all
0407                           , proto::basic_default_domain
0408                         >(catch_)
0409                     );
0410             }
0411         };
0412     
0413     
0414     
0415     
0416     
0417     
0418     
0419         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0420         struct catch_push_back<TryCatch, Exception, Capture, Expr, 6>
0421         {
0422             typedef
0423                 typename proto::result_of::make_expr<
0424                     phoenix::tag::catch_
0425                   , proto::basic_default_domain
0426                   , catch_exception<Exception>
0427                   , Capture
0428                   , Expr
0429                 >::type
0430                 catch_expr;
0431             typedef phoenix::expression::try_catch<
0432                 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
0433               , catch_expr> gen_type;
0434             typedef typename gen_type::type type;
0435             static type
0436             make(
0437                 TryCatch const& try_catch
0438               , Capture const& capture
0439               , Expr const& catch_
0440             )
0441             {
0442                 return
0443                     gen_type::make(
0444                         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)
0445                       , proto::make_expr<
0446                             phoenix::tag::catch_
0447                           , proto::basic_default_domain
0448                         >(catch_exception<Exception>(), capture, catch_)
0449                     );
0450             }
0451         };
0452         template <typename TryCatch, typename Exception, typename Expr>
0453         struct catch_push_back<TryCatch, Exception, void, Expr, 6>
0454         {
0455             typedef
0456                 typename proto::result_of::make_expr<
0457                     phoenix::tag::catch_
0458                   , proto::basic_default_domain
0459                   , catch_exception<Exception>
0460                   , Expr
0461                 >::type
0462                 catch_expr;
0463             typedef phoenix::expression::try_catch<
0464                 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
0465               , catch_expr> gen_type;
0466             typedef typename gen_type::type type;
0467             static type
0468             make(
0469                 TryCatch const& try_catch
0470               , Expr const& catch_
0471             )
0472             {
0473                 return
0474                     gen_type::make(
0475                         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)
0476                       , proto::make_expr<
0477                             phoenix::tag::catch_
0478                           , proto::basic_default_domain
0479                         >(catch_exception<Exception>(), catch_)
0480                     );
0481             }
0482         };
0483         template <typename TryCatch, typename Expr>
0484         struct catch_all_push_back<TryCatch, Expr, 6>
0485         {
0486             typedef
0487                 typename proto::result_of::make_expr<
0488                     phoenix::tag::catch_all
0489                   , proto::basic_default_domain
0490                   , Expr
0491                 >::type
0492                 catch_expr;
0493             typedef phoenix::expression::try_catch<
0494                 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
0495               , catch_expr> gen_type;
0496             typedef typename gen_type::type type;
0497             static type
0498             make(
0499                 TryCatch const& try_catch
0500               , Expr const& catch_
0501             )
0502             {
0503                 return
0504                     gen_type::make(
0505                         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)
0506                       , proto::make_expr<
0507                             phoenix::tag::catch_all
0508                           , proto::basic_default_domain
0509                         >(catch_)
0510                     );
0511             }
0512         };
0513     
0514     
0515     
0516     
0517     
0518     
0519     
0520         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0521         struct catch_push_back<TryCatch, Exception, Capture, Expr, 7>
0522         {
0523             typedef
0524                 typename proto::result_of::make_expr<
0525                     phoenix::tag::catch_
0526                   , proto::basic_default_domain
0527                   , catch_exception<Exception>
0528                   , Capture
0529                   , Expr
0530                 >::type
0531                 catch_expr;
0532             typedef phoenix::expression::try_catch<
0533                 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
0534               , catch_expr> gen_type;
0535             typedef typename gen_type::type type;
0536             static type
0537             make(
0538                 TryCatch const& try_catch
0539               , Capture const& capture
0540               , Expr const& catch_
0541             )
0542             {
0543                 return
0544                     gen_type::make(
0545                         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)
0546                       , proto::make_expr<
0547                             phoenix::tag::catch_
0548                           , proto::basic_default_domain
0549                         >(catch_exception<Exception>(), capture, catch_)
0550                     );
0551             }
0552         };
0553         template <typename TryCatch, typename Exception, typename Expr>
0554         struct catch_push_back<TryCatch, Exception, void, Expr, 7>
0555         {
0556             typedef
0557                 typename proto::result_of::make_expr<
0558                     phoenix::tag::catch_
0559                   , proto::basic_default_domain
0560                   , catch_exception<Exception>
0561                   , Expr
0562                 >::type
0563                 catch_expr;
0564             typedef phoenix::expression::try_catch<
0565                 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
0566               , catch_expr> gen_type;
0567             typedef typename gen_type::type type;
0568             static type
0569             make(
0570                 TryCatch const& try_catch
0571               , Expr const& catch_
0572             )
0573             {
0574                 return
0575                     gen_type::make(
0576                         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)
0577                       , proto::make_expr<
0578                             phoenix::tag::catch_
0579                           , proto::basic_default_domain
0580                         >(catch_exception<Exception>(), catch_)
0581                     );
0582             }
0583         };
0584         template <typename TryCatch, typename Expr>
0585         struct catch_all_push_back<TryCatch, Expr, 7>
0586         {
0587             typedef
0588                 typename proto::result_of::make_expr<
0589                     phoenix::tag::catch_all
0590                   , proto::basic_default_domain
0591                   , Expr
0592                 >::type
0593                 catch_expr;
0594             typedef phoenix::expression::try_catch<
0595                 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
0596               , catch_expr> gen_type;
0597             typedef typename gen_type::type type;
0598             static type
0599             make(
0600                 TryCatch const& try_catch
0601               , Expr const& catch_
0602             )
0603             {
0604                 return
0605                     gen_type::make(
0606                         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)
0607                       , proto::make_expr<
0608                             phoenix::tag::catch_all
0609                           , proto::basic_default_domain
0610                         >(catch_)
0611                     );
0612             }
0613         };
0614     
0615     
0616     
0617     
0618     
0619     
0620     
0621         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0622         struct catch_push_back<TryCatch, Exception, Capture, Expr, 8>
0623         {
0624             typedef
0625                 typename proto::result_of::make_expr<
0626                     phoenix::tag::catch_
0627                   , proto::basic_default_domain
0628                   , catch_exception<Exception>
0629                   , Capture
0630                   , Expr
0631                 >::type
0632                 catch_expr;
0633             typedef phoenix::expression::try_catch<
0634                 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
0635               , catch_expr> gen_type;
0636             typedef typename gen_type::type type;
0637             static type
0638             make(
0639                 TryCatch const& try_catch
0640               , Capture const& capture
0641               , Expr const& catch_
0642             )
0643             {
0644                 return
0645                     gen_type::make(
0646                         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)
0647                       , proto::make_expr<
0648                             phoenix::tag::catch_
0649                           , proto::basic_default_domain
0650                         >(catch_exception<Exception>(), capture, catch_)
0651                     );
0652             }
0653         };
0654         template <typename TryCatch, typename Exception, typename Expr>
0655         struct catch_push_back<TryCatch, Exception, void, Expr, 8>
0656         {
0657             typedef
0658                 typename proto::result_of::make_expr<
0659                     phoenix::tag::catch_
0660                   , proto::basic_default_domain
0661                   , catch_exception<Exception>
0662                   , Expr
0663                 >::type
0664                 catch_expr;
0665             typedef phoenix::expression::try_catch<
0666                 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
0667               , catch_expr> gen_type;
0668             typedef typename gen_type::type type;
0669             static type
0670             make(
0671                 TryCatch const& try_catch
0672               , Expr const& catch_
0673             )
0674             {
0675                 return
0676                     gen_type::make(
0677                         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)
0678                       , proto::make_expr<
0679                             phoenix::tag::catch_
0680                           , proto::basic_default_domain
0681                         >(catch_exception<Exception>(), catch_)
0682                     );
0683             }
0684         };
0685         template <typename TryCatch, typename Expr>
0686         struct catch_all_push_back<TryCatch, Expr, 8>
0687         {
0688             typedef
0689                 typename proto::result_of::make_expr<
0690                     phoenix::tag::catch_all
0691                   , proto::basic_default_domain
0692                   , Expr
0693                 >::type
0694                 catch_expr;
0695             typedef phoenix::expression::try_catch<
0696                 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
0697               , catch_expr> gen_type;
0698             typedef typename gen_type::type type;
0699             static type
0700             make(
0701                 TryCatch const& try_catch
0702               , Expr const& catch_
0703             )
0704             {
0705                 return
0706                     gen_type::make(
0707                         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)
0708                       , proto::make_expr<
0709                             phoenix::tag::catch_all
0710                           , proto::basic_default_domain
0711                         >(catch_)
0712                     );
0713             }
0714         };
0715     
0716     
0717     
0718     
0719     
0720     
0721     
0722         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0723         struct catch_push_back<TryCatch, Exception, Capture, Expr, 9>
0724         {
0725             typedef
0726                 typename proto::result_of::make_expr<
0727                     phoenix::tag::catch_
0728                   , proto::basic_default_domain
0729                   , catch_exception<Exception>
0730                   , Capture
0731                   , Expr
0732                 >::type
0733                 catch_expr;
0734             typedef phoenix::expression::try_catch<
0735                 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
0736               , catch_expr> gen_type;
0737             typedef typename gen_type::type type;
0738             static type
0739             make(
0740                 TryCatch const& try_catch
0741               , Capture const& capture
0742               , Expr const& catch_
0743             )
0744             {
0745                 return
0746                     gen_type::make(
0747                         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)
0748                       , proto::make_expr<
0749                             phoenix::tag::catch_
0750                           , proto::basic_default_domain
0751                         >(catch_exception<Exception>(), capture, catch_)
0752                     );
0753             }
0754         };
0755         template <typename TryCatch, typename Exception, typename Expr>
0756         struct catch_push_back<TryCatch, Exception, void, Expr, 9>
0757         {
0758             typedef
0759                 typename proto::result_of::make_expr<
0760                     phoenix::tag::catch_
0761                   , proto::basic_default_domain
0762                   , catch_exception<Exception>
0763                   , Expr
0764                 >::type
0765                 catch_expr;
0766             typedef phoenix::expression::try_catch<
0767                 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
0768               , catch_expr> gen_type;
0769             typedef typename gen_type::type type;
0770             static type
0771             make(
0772                 TryCatch const& try_catch
0773               , Expr const& catch_
0774             )
0775             {
0776                 return
0777                     gen_type::make(
0778                         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)
0779                       , proto::make_expr<
0780                             phoenix::tag::catch_
0781                           , proto::basic_default_domain
0782                         >(catch_exception<Exception>(), catch_)
0783                     );
0784             }
0785         };
0786         template <typename TryCatch, typename Expr>
0787         struct catch_all_push_back<TryCatch, Expr, 9>
0788         {
0789             typedef
0790                 typename proto::result_of::make_expr<
0791                     phoenix::tag::catch_all
0792                   , proto::basic_default_domain
0793                   , Expr
0794                 >::type
0795                 catch_expr;
0796             typedef phoenix::expression::try_catch<
0797                 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
0798               , catch_expr> gen_type;
0799             typedef typename gen_type::type type;
0800             static type
0801             make(
0802                 TryCatch const& try_catch
0803               , Expr const& catch_
0804             )
0805             {
0806                 return
0807                     gen_type::make(
0808                         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)
0809                       , proto::make_expr<
0810                             phoenix::tag::catch_all
0811                           , proto::basic_default_domain
0812                         >(catch_)
0813                     );
0814             }
0815         };
0816     
0817     
0818     
0819     
0820     
0821     
0822     
0823         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0824         struct catch_push_back<TryCatch, Exception, Capture, Expr, 10>
0825         {
0826             typedef
0827                 typename proto::result_of::make_expr<
0828                     phoenix::tag::catch_
0829                   , proto::basic_default_domain
0830                   , catch_exception<Exception>
0831                   , Capture
0832                   , Expr
0833                 >::type
0834                 catch_expr;
0835             typedef phoenix::expression::try_catch<
0836                 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
0837               , catch_expr> gen_type;
0838             typedef typename gen_type::type type;
0839             static type
0840             make(
0841                 TryCatch const& try_catch
0842               , Capture const& capture
0843               , Expr const& catch_
0844             )
0845             {
0846                 return
0847                     gen_type::make(
0848                         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)
0849                       , proto::make_expr<
0850                             phoenix::tag::catch_
0851                           , proto::basic_default_domain
0852                         >(catch_exception<Exception>(), capture, catch_)
0853                     );
0854             }
0855         };
0856         template <typename TryCatch, typename Exception, typename Expr>
0857         struct catch_push_back<TryCatch, Exception, void, Expr, 10>
0858         {
0859             typedef
0860                 typename proto::result_of::make_expr<
0861                     phoenix::tag::catch_
0862                   , proto::basic_default_domain
0863                   , catch_exception<Exception>
0864                   , Expr
0865                 >::type
0866                 catch_expr;
0867             typedef phoenix::expression::try_catch<
0868                 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
0869               , catch_expr> gen_type;
0870             typedef typename gen_type::type type;
0871             static type
0872             make(
0873                 TryCatch const& try_catch
0874               , Expr const& catch_
0875             )
0876             {
0877                 return
0878                     gen_type::make(
0879                         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)
0880                       , proto::make_expr<
0881                             phoenix::tag::catch_
0882                           , proto::basic_default_domain
0883                         >(catch_exception<Exception>(), catch_)
0884                     );
0885             }
0886         };
0887         template <typename TryCatch, typename Expr>
0888         struct catch_all_push_back<TryCatch, Expr, 10>
0889         {
0890             typedef
0891                 typename proto::result_of::make_expr<
0892                     phoenix::tag::catch_all
0893                   , proto::basic_default_domain
0894                   , Expr
0895                 >::type
0896                 catch_expr;
0897             typedef phoenix::expression::try_catch<
0898                 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
0899               , catch_expr> gen_type;
0900             typedef typename gen_type::type type;
0901             static type
0902             make(
0903                 TryCatch const& try_catch
0904               , Expr const& catch_
0905             )
0906             {
0907                 return
0908                     gen_type::make(
0909                         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)
0910                       , proto::make_expr<
0911                             phoenix::tag::catch_all
0912                           , proto::basic_default_domain
0913                         >(catch_)
0914                     );
0915             }
0916         };
0917     
0918     
0919     
0920     
0921     
0922     
0923     
0924         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
0925         struct catch_push_back<TryCatch, Exception, Capture, Expr, 11>
0926         {
0927             typedef
0928                 typename proto::result_of::make_expr<
0929                     phoenix::tag::catch_
0930                   , proto::basic_default_domain
0931                   , catch_exception<Exception>
0932                   , Capture
0933                   , Expr
0934                 >::type
0935                 catch_expr;
0936             typedef phoenix::expression::try_catch<
0937                 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
0938               , catch_expr> gen_type;
0939             typedef typename gen_type::type type;
0940             static type
0941             make(
0942                 TryCatch const& try_catch
0943               , Capture const& capture
0944               , Expr const& catch_
0945             )
0946             {
0947                 return
0948                     gen_type::make(
0949                         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)
0950                       , proto::make_expr<
0951                             phoenix::tag::catch_
0952                           , proto::basic_default_domain
0953                         >(catch_exception<Exception>(), capture, catch_)
0954                     );
0955             }
0956         };
0957         template <typename TryCatch, typename Exception, typename Expr>
0958         struct catch_push_back<TryCatch, Exception, void, Expr, 11>
0959         {
0960             typedef
0961                 typename proto::result_of::make_expr<
0962                     phoenix::tag::catch_
0963                   , proto::basic_default_domain
0964                   , catch_exception<Exception>
0965                   , Expr
0966                 >::type
0967                 catch_expr;
0968             typedef phoenix::expression::try_catch<
0969                 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
0970               , catch_expr> gen_type;
0971             typedef typename gen_type::type type;
0972             static type
0973             make(
0974                 TryCatch const& try_catch
0975               , Expr const& catch_
0976             )
0977             {
0978                 return
0979                     gen_type::make(
0980                         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)
0981                       , proto::make_expr<
0982                             phoenix::tag::catch_
0983                           , proto::basic_default_domain
0984                         >(catch_exception<Exception>(), catch_)
0985                     );
0986             }
0987         };
0988         template <typename TryCatch, typename Expr>
0989         struct catch_all_push_back<TryCatch, Expr, 11>
0990         {
0991             typedef
0992                 typename proto::result_of::make_expr<
0993                     phoenix::tag::catch_all
0994                   , proto::basic_default_domain
0995                   , Expr
0996                 >::type
0997                 catch_expr;
0998             typedef phoenix::expression::try_catch<
0999                 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
1000               , catch_expr> gen_type;
1001             typedef typename gen_type::type type;
1002             static type
1003             make(
1004                 TryCatch const& try_catch
1005               , Expr const& catch_
1006             )
1007             {
1008                 return
1009                     gen_type::make(
1010                         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)
1011                       , proto::make_expr<
1012                             phoenix::tag::catch_all
1013                           , proto::basic_default_domain
1014                         >(catch_)
1015                     );
1016             }
1017         };
1018     
1019     
1020     
1021     
1022     
1023     
1024     
1025         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1026         struct catch_push_back<TryCatch, Exception, Capture, Expr, 12>
1027         {
1028             typedef
1029                 typename proto::result_of::make_expr<
1030                     phoenix::tag::catch_
1031                   , proto::basic_default_domain
1032                   , catch_exception<Exception>
1033                   , Capture
1034                   , Expr
1035                 >::type
1036                 catch_expr;
1037             typedef phoenix::expression::try_catch<
1038                 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
1039               , catch_expr> gen_type;
1040             typedef typename gen_type::type type;
1041             static type
1042             make(
1043                 TryCatch const& try_catch
1044               , Capture const& capture
1045               , Expr const& catch_
1046             )
1047             {
1048                 return
1049                     gen_type::make(
1050                         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)
1051                       , proto::make_expr<
1052                             phoenix::tag::catch_
1053                           , proto::basic_default_domain
1054                         >(catch_exception<Exception>(), capture, catch_)
1055                     );
1056             }
1057         };
1058         template <typename TryCatch, typename Exception, typename Expr>
1059         struct catch_push_back<TryCatch, Exception, void, Expr, 12>
1060         {
1061             typedef
1062                 typename proto::result_of::make_expr<
1063                     phoenix::tag::catch_
1064                   , proto::basic_default_domain
1065                   , catch_exception<Exception>
1066                   , Expr
1067                 >::type
1068                 catch_expr;
1069             typedef phoenix::expression::try_catch<
1070                 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
1071               , catch_expr> gen_type;
1072             typedef typename gen_type::type type;
1073             static type
1074             make(
1075                 TryCatch const& try_catch
1076               , Expr const& catch_
1077             )
1078             {
1079                 return
1080                     gen_type::make(
1081                         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)
1082                       , proto::make_expr<
1083                             phoenix::tag::catch_
1084                           , proto::basic_default_domain
1085                         >(catch_exception<Exception>(), catch_)
1086                     );
1087             }
1088         };
1089         template <typename TryCatch, typename Expr>
1090         struct catch_all_push_back<TryCatch, Expr, 12>
1091         {
1092             typedef
1093                 typename proto::result_of::make_expr<
1094                     phoenix::tag::catch_all
1095                   , proto::basic_default_domain
1096                   , Expr
1097                 >::type
1098                 catch_expr;
1099             typedef phoenix::expression::try_catch<
1100                 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
1101               , catch_expr> gen_type;
1102             typedef typename gen_type::type type;
1103             static type
1104             make(
1105                 TryCatch const& try_catch
1106               , Expr const& catch_
1107             )
1108             {
1109                 return
1110                     gen_type::make(
1111                         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)
1112                       , proto::make_expr<
1113                             phoenix::tag::catch_all
1114                           , proto::basic_default_domain
1115                         >(catch_)
1116                     );
1117             }
1118         };
1119     
1120     
1121     
1122     
1123     
1124     
1125     
1126         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1127         struct catch_push_back<TryCatch, Exception, Capture, Expr, 13>
1128         {
1129             typedef
1130                 typename proto::result_of::make_expr<
1131                     phoenix::tag::catch_
1132                   , proto::basic_default_domain
1133                   , catch_exception<Exception>
1134                   , Capture
1135                   , Expr
1136                 >::type
1137                 catch_expr;
1138             typedef phoenix::expression::try_catch<
1139                 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
1140               , catch_expr> gen_type;
1141             typedef typename gen_type::type type;
1142             static type
1143             make(
1144                 TryCatch const& try_catch
1145               , Capture const& capture
1146               , Expr const& catch_
1147             )
1148             {
1149                 return
1150                     gen_type::make(
1151                         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)
1152                       , proto::make_expr<
1153                             phoenix::tag::catch_
1154                           , proto::basic_default_domain
1155                         >(catch_exception<Exception>(), capture, catch_)
1156                     );
1157             }
1158         };
1159         template <typename TryCatch, typename Exception, typename Expr>
1160         struct catch_push_back<TryCatch, Exception, void, Expr, 13>
1161         {
1162             typedef
1163                 typename proto::result_of::make_expr<
1164                     phoenix::tag::catch_
1165                   , proto::basic_default_domain
1166                   , catch_exception<Exception>
1167                   , Expr
1168                 >::type
1169                 catch_expr;
1170             typedef phoenix::expression::try_catch<
1171                 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
1172               , catch_expr> gen_type;
1173             typedef typename gen_type::type type;
1174             static type
1175             make(
1176                 TryCatch const& try_catch
1177               , Expr const& catch_
1178             )
1179             {
1180                 return
1181                     gen_type::make(
1182                         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)
1183                       , proto::make_expr<
1184                             phoenix::tag::catch_
1185                           , proto::basic_default_domain
1186                         >(catch_exception<Exception>(), catch_)
1187                     );
1188             }
1189         };
1190         template <typename TryCatch, typename Expr>
1191         struct catch_all_push_back<TryCatch, Expr, 13>
1192         {
1193             typedef
1194                 typename proto::result_of::make_expr<
1195                     phoenix::tag::catch_all
1196                   , proto::basic_default_domain
1197                   , Expr
1198                 >::type
1199                 catch_expr;
1200             typedef phoenix::expression::try_catch<
1201                 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
1202               , catch_expr> gen_type;
1203             typedef typename gen_type::type type;
1204             static type
1205             make(
1206                 TryCatch const& try_catch
1207               , Expr const& catch_
1208             )
1209             {
1210                 return
1211                     gen_type::make(
1212                         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)
1213                       , proto::make_expr<
1214                             phoenix::tag::catch_all
1215                           , proto::basic_default_domain
1216                         >(catch_)
1217                     );
1218             }
1219         };
1220     
1221     
1222     
1223     
1224     
1225     
1226     
1227         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1228         struct catch_push_back<TryCatch, Exception, Capture, Expr, 14>
1229         {
1230             typedef
1231                 typename proto::result_of::make_expr<
1232                     phoenix::tag::catch_
1233                   , proto::basic_default_domain
1234                   , catch_exception<Exception>
1235                   , Capture
1236                   , Expr
1237                 >::type
1238                 catch_expr;
1239             typedef phoenix::expression::try_catch<
1240                 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
1241               , catch_expr> gen_type;
1242             typedef typename gen_type::type type;
1243             static type
1244             make(
1245                 TryCatch const& try_catch
1246               , Capture const& capture
1247               , Expr const& catch_
1248             )
1249             {
1250                 return
1251                     gen_type::make(
1252                         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)
1253                       , proto::make_expr<
1254                             phoenix::tag::catch_
1255                           , proto::basic_default_domain
1256                         >(catch_exception<Exception>(), capture, catch_)
1257                     );
1258             }
1259         };
1260         template <typename TryCatch, typename Exception, typename Expr>
1261         struct catch_push_back<TryCatch, Exception, void, Expr, 14>
1262         {
1263             typedef
1264                 typename proto::result_of::make_expr<
1265                     phoenix::tag::catch_
1266                   , proto::basic_default_domain
1267                   , catch_exception<Exception>
1268                   , Expr
1269                 >::type
1270                 catch_expr;
1271             typedef phoenix::expression::try_catch<
1272                 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
1273               , catch_expr> gen_type;
1274             typedef typename gen_type::type type;
1275             static type
1276             make(
1277                 TryCatch const& try_catch
1278               , Expr const& catch_
1279             )
1280             {
1281                 return
1282                     gen_type::make(
1283                         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)
1284                       , proto::make_expr<
1285                             phoenix::tag::catch_
1286                           , proto::basic_default_domain
1287                         >(catch_exception<Exception>(), catch_)
1288                     );
1289             }
1290         };
1291         template <typename TryCatch, typename Expr>
1292         struct catch_all_push_back<TryCatch, Expr, 14>
1293         {
1294             typedef
1295                 typename proto::result_of::make_expr<
1296                     phoenix::tag::catch_all
1297                   , proto::basic_default_domain
1298                   , Expr
1299                 >::type
1300                 catch_expr;
1301             typedef phoenix::expression::try_catch<
1302                 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
1303               , catch_expr> gen_type;
1304             typedef typename gen_type::type type;
1305             static type
1306             make(
1307                 TryCatch const& try_catch
1308               , Expr const& catch_
1309             )
1310             {
1311                 return
1312                     gen_type::make(
1313                         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)
1314                       , proto::make_expr<
1315                             phoenix::tag::catch_all
1316                           , proto::basic_default_domain
1317                         >(catch_)
1318                     );
1319             }
1320         };
1321     
1322     
1323     
1324     
1325     
1326     
1327     
1328         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1329         struct catch_push_back<TryCatch, Exception, Capture, Expr, 15>
1330         {
1331             typedef
1332                 typename proto::result_of::make_expr<
1333                     phoenix::tag::catch_
1334                   , proto::basic_default_domain
1335                   , catch_exception<Exception>
1336                   , Capture
1337                   , Expr
1338                 >::type
1339                 catch_expr;
1340             typedef phoenix::expression::try_catch<
1341                 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
1342               , catch_expr> gen_type;
1343             typedef typename gen_type::type type;
1344             static type
1345             make(
1346                 TryCatch const& try_catch
1347               , Capture const& capture
1348               , Expr const& catch_
1349             )
1350             {
1351                 return
1352                     gen_type::make(
1353                         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)
1354                       , proto::make_expr<
1355                             phoenix::tag::catch_
1356                           , proto::basic_default_domain
1357                         >(catch_exception<Exception>(), capture, catch_)
1358                     );
1359             }
1360         };
1361         template <typename TryCatch, typename Exception, typename Expr>
1362         struct catch_push_back<TryCatch, Exception, void, Expr, 15>
1363         {
1364             typedef
1365                 typename proto::result_of::make_expr<
1366                     phoenix::tag::catch_
1367                   , proto::basic_default_domain
1368                   , catch_exception<Exception>
1369                   , Expr
1370                 >::type
1371                 catch_expr;
1372             typedef phoenix::expression::try_catch<
1373                 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
1374               , catch_expr> gen_type;
1375             typedef typename gen_type::type type;
1376             static type
1377             make(
1378                 TryCatch const& try_catch
1379               , Expr const& catch_
1380             )
1381             {
1382                 return
1383                     gen_type::make(
1384                         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)
1385                       , proto::make_expr<
1386                             phoenix::tag::catch_
1387                           , proto::basic_default_domain
1388                         >(catch_exception<Exception>(), catch_)
1389                     );
1390             }
1391         };
1392         template <typename TryCatch, typename Expr>
1393         struct catch_all_push_back<TryCatch, Expr, 15>
1394         {
1395             typedef
1396                 typename proto::result_of::make_expr<
1397                     phoenix::tag::catch_all
1398                   , proto::basic_default_domain
1399                   , Expr
1400                 >::type
1401                 catch_expr;
1402             typedef phoenix::expression::try_catch<
1403                 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
1404               , catch_expr> gen_type;
1405             typedef typename gen_type::type type;
1406             static type
1407             make(
1408                 TryCatch const& try_catch
1409               , Expr const& catch_
1410             )
1411             {
1412                 return
1413                     gen_type::make(
1414                         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)
1415                       , proto::make_expr<
1416                             phoenix::tag::catch_all
1417                           , proto::basic_default_domain
1418                         >(catch_)
1419                     );
1420             }
1421         };
1422     
1423     
1424     
1425     
1426     
1427     
1428     
1429         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1430         struct catch_push_back<TryCatch, Exception, Capture, Expr, 16>
1431         {
1432             typedef
1433                 typename proto::result_of::make_expr<
1434                     phoenix::tag::catch_
1435                   , proto::basic_default_domain
1436                   , catch_exception<Exception>
1437                   , Capture
1438                   , Expr
1439                 >::type
1440                 catch_expr;
1441             typedef phoenix::expression::try_catch<
1442                 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
1443               , catch_expr> gen_type;
1444             typedef typename gen_type::type type;
1445             static type
1446             make(
1447                 TryCatch const& try_catch
1448               , Capture const& capture
1449               , Expr const& catch_
1450             )
1451             {
1452                 return
1453                     gen_type::make(
1454                         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)
1455                       , proto::make_expr<
1456                             phoenix::tag::catch_
1457                           , proto::basic_default_domain
1458                         >(catch_exception<Exception>(), capture, catch_)
1459                     );
1460             }
1461         };
1462         template <typename TryCatch, typename Exception, typename Expr>
1463         struct catch_push_back<TryCatch, Exception, void, Expr, 16>
1464         {
1465             typedef
1466                 typename proto::result_of::make_expr<
1467                     phoenix::tag::catch_
1468                   , proto::basic_default_domain
1469                   , catch_exception<Exception>
1470                   , Expr
1471                 >::type
1472                 catch_expr;
1473             typedef phoenix::expression::try_catch<
1474                 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
1475               , catch_expr> gen_type;
1476             typedef typename gen_type::type type;
1477             static type
1478             make(
1479                 TryCatch const& try_catch
1480               , Expr const& catch_
1481             )
1482             {
1483                 return
1484                     gen_type::make(
1485                         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)
1486                       , proto::make_expr<
1487                             phoenix::tag::catch_
1488                           , proto::basic_default_domain
1489                         >(catch_exception<Exception>(), catch_)
1490                     );
1491             }
1492         };
1493         template <typename TryCatch, typename Expr>
1494         struct catch_all_push_back<TryCatch, Expr, 16>
1495         {
1496             typedef
1497                 typename proto::result_of::make_expr<
1498                     phoenix::tag::catch_all
1499                   , proto::basic_default_domain
1500                   , Expr
1501                 >::type
1502                 catch_expr;
1503             typedef phoenix::expression::try_catch<
1504                 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
1505               , catch_expr> gen_type;
1506             typedef typename gen_type::type type;
1507             static type
1508             make(
1509                 TryCatch const& try_catch
1510               , Expr const& catch_
1511             )
1512             {
1513                 return
1514                     gen_type::make(
1515                         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)
1516                       , proto::make_expr<
1517                             phoenix::tag::catch_all
1518                           , proto::basic_default_domain
1519                         >(catch_)
1520                     );
1521             }
1522         };
1523     
1524     
1525     
1526     
1527     
1528     
1529     
1530         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1531         struct catch_push_back<TryCatch, Exception, Capture, Expr, 17>
1532         {
1533             typedef
1534                 typename proto::result_of::make_expr<
1535                     phoenix::tag::catch_
1536                   , proto::basic_default_domain
1537                   , catch_exception<Exception>
1538                   , Capture
1539                   , Expr
1540                 >::type
1541                 catch_expr;
1542             typedef phoenix::expression::try_catch<
1543                 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
1544               , catch_expr> gen_type;
1545             typedef typename gen_type::type type;
1546             static type
1547             make(
1548                 TryCatch const& try_catch
1549               , Capture const& capture
1550               , Expr const& catch_
1551             )
1552             {
1553                 return
1554                     gen_type::make(
1555                         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)
1556                       , proto::make_expr<
1557                             phoenix::tag::catch_
1558                           , proto::basic_default_domain
1559                         >(catch_exception<Exception>(), capture, catch_)
1560                     );
1561             }
1562         };
1563         template <typename TryCatch, typename Exception, typename Expr>
1564         struct catch_push_back<TryCatch, Exception, void, Expr, 17>
1565         {
1566             typedef
1567                 typename proto::result_of::make_expr<
1568                     phoenix::tag::catch_
1569                   , proto::basic_default_domain
1570                   , catch_exception<Exception>
1571                   , Expr
1572                 >::type
1573                 catch_expr;
1574             typedef phoenix::expression::try_catch<
1575                 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
1576               , catch_expr> gen_type;
1577             typedef typename gen_type::type type;
1578             static type
1579             make(
1580                 TryCatch const& try_catch
1581               , Expr const& catch_
1582             )
1583             {
1584                 return
1585                     gen_type::make(
1586                         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)
1587                       , proto::make_expr<
1588                             phoenix::tag::catch_
1589                           , proto::basic_default_domain
1590                         >(catch_exception<Exception>(), catch_)
1591                     );
1592             }
1593         };
1594         template <typename TryCatch, typename Expr>
1595         struct catch_all_push_back<TryCatch, Expr, 17>
1596         {
1597             typedef
1598                 typename proto::result_of::make_expr<
1599                     phoenix::tag::catch_all
1600                   , proto::basic_default_domain
1601                   , Expr
1602                 >::type
1603                 catch_expr;
1604             typedef phoenix::expression::try_catch<
1605                 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
1606               , catch_expr> gen_type;
1607             typedef typename gen_type::type type;
1608             static type
1609             make(
1610                 TryCatch const& try_catch
1611               , Expr const& catch_
1612             )
1613             {
1614                 return
1615                     gen_type::make(
1616                         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)
1617                       , proto::make_expr<
1618                             phoenix::tag::catch_all
1619                           , proto::basic_default_domain
1620                         >(catch_)
1621                     );
1622             }
1623         };
1624     
1625     
1626     
1627     
1628     
1629     
1630     
1631         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1632         struct catch_push_back<TryCatch, Exception, Capture, Expr, 18>
1633         {
1634             typedef
1635                 typename proto::result_of::make_expr<
1636                     phoenix::tag::catch_
1637                   , proto::basic_default_domain
1638                   , catch_exception<Exception>
1639                   , Capture
1640                   , Expr
1641                 >::type
1642                 catch_expr;
1643             typedef phoenix::expression::try_catch<
1644                 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
1645               , catch_expr> gen_type;
1646             typedef typename gen_type::type type;
1647             static type
1648             make(
1649                 TryCatch const& try_catch
1650               , Capture const& capture
1651               , Expr const& catch_
1652             )
1653             {
1654                 return
1655                     gen_type::make(
1656                         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)
1657                       , proto::make_expr<
1658                             phoenix::tag::catch_
1659                           , proto::basic_default_domain
1660                         >(catch_exception<Exception>(), capture, catch_)
1661                     );
1662             }
1663         };
1664         template <typename TryCatch, typename Exception, typename Expr>
1665         struct catch_push_back<TryCatch, Exception, void, Expr, 18>
1666         {
1667             typedef
1668                 typename proto::result_of::make_expr<
1669                     phoenix::tag::catch_
1670                   , proto::basic_default_domain
1671                   , catch_exception<Exception>
1672                   , Expr
1673                 >::type
1674                 catch_expr;
1675             typedef phoenix::expression::try_catch<
1676                 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
1677               , catch_expr> gen_type;
1678             typedef typename gen_type::type type;
1679             static type
1680             make(
1681                 TryCatch const& try_catch
1682               , Expr const& catch_
1683             )
1684             {
1685                 return
1686                     gen_type::make(
1687                         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)
1688                       , proto::make_expr<
1689                             phoenix::tag::catch_
1690                           , proto::basic_default_domain
1691                         >(catch_exception<Exception>(), catch_)
1692                     );
1693             }
1694         };
1695         template <typename TryCatch, typename Expr>
1696         struct catch_all_push_back<TryCatch, Expr, 18>
1697         {
1698             typedef
1699                 typename proto::result_of::make_expr<
1700                     phoenix::tag::catch_all
1701                   , proto::basic_default_domain
1702                   , Expr
1703                 >::type
1704                 catch_expr;
1705             typedef phoenix::expression::try_catch<
1706                 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
1707               , catch_expr> gen_type;
1708             typedef typename gen_type::type type;
1709             static type
1710             make(
1711                 TryCatch const& try_catch
1712               , Expr const& catch_
1713             )
1714             {
1715                 return
1716                     gen_type::make(
1717                         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)
1718                       , proto::make_expr<
1719                             phoenix::tag::catch_all
1720                           , proto::basic_default_domain
1721                         >(catch_)
1722                     );
1723             }
1724         };
1725     
1726     
1727     
1728     
1729     
1730     
1731     
1732         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1733         struct catch_push_back<TryCatch, Exception, Capture, Expr, 19>
1734         {
1735             typedef
1736                 typename proto::result_of::make_expr<
1737                     phoenix::tag::catch_
1738                   , proto::basic_default_domain
1739                   , catch_exception<Exception>
1740                   , Capture
1741                   , Expr
1742                 >::type
1743                 catch_expr;
1744             typedef phoenix::expression::try_catch<
1745                 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
1746               , catch_expr> gen_type;
1747             typedef typename gen_type::type type;
1748             static type
1749             make(
1750                 TryCatch const& try_catch
1751               , Capture const& capture
1752               , Expr const& catch_
1753             )
1754             {
1755                 return
1756                     gen_type::make(
1757                         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)
1758                       , proto::make_expr<
1759                             phoenix::tag::catch_
1760                           , proto::basic_default_domain
1761                         >(catch_exception<Exception>(), capture, catch_)
1762                     );
1763             }
1764         };
1765         template <typename TryCatch, typename Exception, typename Expr>
1766         struct catch_push_back<TryCatch, Exception, void, Expr, 19>
1767         {
1768             typedef
1769                 typename proto::result_of::make_expr<
1770                     phoenix::tag::catch_
1771                   , proto::basic_default_domain
1772                   , catch_exception<Exception>
1773                   , Expr
1774                 >::type
1775                 catch_expr;
1776             typedef phoenix::expression::try_catch<
1777                 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
1778               , catch_expr> gen_type;
1779             typedef typename gen_type::type type;
1780             static type
1781             make(
1782                 TryCatch const& try_catch
1783               , Expr const& catch_
1784             )
1785             {
1786                 return
1787                     gen_type::make(
1788                         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)
1789                       , proto::make_expr<
1790                             phoenix::tag::catch_
1791                           , proto::basic_default_domain
1792                         >(catch_exception<Exception>(), catch_)
1793                     );
1794             }
1795         };
1796         template <typename TryCatch, typename Expr>
1797         struct catch_all_push_back<TryCatch, Expr, 19>
1798         {
1799             typedef
1800                 typename proto::result_of::make_expr<
1801                     phoenix::tag::catch_all
1802                   , proto::basic_default_domain
1803                   , Expr
1804                 >::type
1805                 catch_expr;
1806             typedef phoenix::expression::try_catch<
1807                 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
1808               , catch_expr> gen_type;
1809             typedef typename gen_type::type type;
1810             static type
1811             make(
1812                 TryCatch const& try_catch
1813               , Expr const& catch_
1814             )
1815             {
1816                 return
1817                     gen_type::make(
1818                         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)
1819                       , proto::make_expr<
1820                             phoenix::tag::catch_all
1821                           , proto::basic_default_domain
1822                         >(catch_)
1823                     );
1824             }
1825         };
1826     
1827     
1828     
1829     
1830     
1831     
1832     
1833         template <typename TryCatch, typename Exception, typename Capture, typename Expr>
1834         struct catch_push_back<TryCatch, Exception, Capture, Expr, 20>
1835         {
1836             typedef
1837                 typename proto::result_of::make_expr<
1838                     phoenix::tag::catch_
1839                   , proto::basic_default_domain
1840                   , catch_exception<Exception>
1841                   , Capture
1842                   , Expr
1843                 >::type
1844                 catch_expr;
1845             typedef phoenix::expression::try_catch<
1846                 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
1847               , catch_expr> gen_type;
1848             typedef typename gen_type::type type;
1849             static type
1850             make(
1851                 TryCatch const& try_catch
1852               , Capture const& capture
1853               , Expr const& catch_
1854             )
1855             {
1856                 return
1857                     gen_type::make(
1858                         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)
1859                       , proto::make_expr<
1860                             phoenix::tag::catch_
1861                           , proto::basic_default_domain
1862                         >(catch_exception<Exception>(), capture, catch_)
1863                     );
1864             }
1865         };
1866         template <typename TryCatch, typename Exception, typename Expr>
1867         struct catch_push_back<TryCatch, Exception, void, Expr, 20>
1868         {
1869             typedef
1870                 typename proto::result_of::make_expr<
1871                     phoenix::tag::catch_
1872                   , proto::basic_default_domain
1873                   , catch_exception<Exception>
1874                   , Expr
1875                 >::type
1876                 catch_expr;
1877             typedef phoenix::expression::try_catch<
1878                 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
1879               , catch_expr> gen_type;
1880             typedef typename gen_type::type type;
1881             static type
1882             make(
1883                 TryCatch const& try_catch
1884               , Expr const& catch_
1885             )
1886             {
1887                 return
1888                     gen_type::make(
1889                         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)
1890                       , proto::make_expr<
1891                             phoenix::tag::catch_
1892                           , proto::basic_default_domain
1893                         >(catch_exception<Exception>(), catch_)
1894                     );
1895             }
1896         };
1897         template <typename TryCatch, typename Expr>
1898         struct catch_all_push_back<TryCatch, Expr, 20>
1899         {
1900             typedef
1901                 typename proto::result_of::make_expr<
1902                     phoenix::tag::catch_all
1903                   , proto::basic_default_domain
1904                   , Expr
1905                 >::type
1906                 catch_expr;
1907             typedef phoenix::expression::try_catch<
1908                 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
1909               , catch_expr> gen_type;
1910             typedef typename gen_type::type type;
1911             static type
1912             make(
1913                 TryCatch const& try_catch
1914               , Expr const& catch_
1915             )
1916             {
1917                 return
1918                     gen_type::make(
1919                         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)
1920                       , proto::make_expr<
1921                             phoenix::tag::catch_all
1922                           , proto::basic_default_domain
1923                         >(catch_)
1924                     );
1925             }
1926         };
1927