Back to home page

EIC code displayed by LXR

 
 

    


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

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