918 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			918 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/*==============================================================================
							 | 
						||
| 
								 | 
							
								    Copyright (c) 2005-2010 Joel de Guzman
							 | 
						||
| 
								 | 
							
								    Copyright (c) 2010 Thomas Heller
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Distributed under the Boost Software License, Version 1.0. (See accompanying
							 | 
						||
| 
								 | 
							
								    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
							 | 
						||
| 
								 | 
							
								==============================================================================*/
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 2>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
							 | 
						||
| 
								 | 
							
								                      , proto::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 2>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
							 | 
						||
| 
								 | 
							
								                      , proto::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 2>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::child_c<TryCatch, 0>::type , typename proto::result_of::child_c<TryCatch, 1>::type
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch)
							 | 
						||
| 
								 | 
							
								                      , proto::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 3>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
							 | 
						||
| 
								 | 
							
								                      , proto::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 3>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
							 | 
						||
| 
								 | 
							
								                      , proto::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 3>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        proto::child_c< 0>(try_catch) , proto::child_c< 1>(try_catch) , proto::child_c< 2>(try_catch)
							 | 
						||
| 
								 | 
							
								                      , proto::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 4>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 4>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 4>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 5>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 5>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 5>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 6>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 6>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 6>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 7>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 7>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 7>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 8>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 8>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 8>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 9>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 9>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 9>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Capture, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, Capture, Expr, 10>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Capture
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Capture const& capture
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), capture, catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Exception, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_push_back<TryCatch, Exception, void, Expr, 10>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , catch_exception<Exception>
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_exception<Exception>(), catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        template <typename TryCatch, typename Expr>
							 | 
						||
| 
								 | 
							
								        struct catch_all_push_back<TryCatch, Expr, 10>
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            typedef
							 | 
						||
| 
								 | 
							
								                typename proto::result_of::make_expr<
							 | 
						||
| 
								 | 
							
								                    phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                  , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                  , Expr
							 | 
						||
| 
								 | 
							
								                >::type
							 | 
						||
| 
								 | 
							
								                catch_expr;
							 | 
						||
| 
								 | 
							
								            typedef phoenix::expression::try_catch<
							 | 
						||
| 
								 | 
							
								                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
							 | 
						||
| 
								 | 
							
								              , catch_expr> gen_type;
							 | 
						||
| 
								 | 
							
								            typedef typename gen_type::type type;
							 | 
						||
| 
								 | 
							
								            static type
							 | 
						||
| 
								 | 
							
								            make(
							 | 
						||
| 
								 | 
							
								                TryCatch const& try_catch
							 | 
						||
| 
								 | 
							
								              , Expr const& catch_
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return
							 | 
						||
| 
								 | 
							
								                    gen_type::make(
							 | 
						||
| 
								 | 
							
								                        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::make_expr<
							 | 
						||
| 
								 | 
							
								                            phoenix::tag::catch_all
							 | 
						||
| 
								 | 
							
								                          , proto::basic_default_domain
							 | 
						||
| 
								 | 
							
								                        >(catch_)
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    
							 |