/////////////////////////////////////////////////////////////////////////////// /// \file matches_.hpp /// Definitions of matches_ specializations // // Copyright 2008 Eric Niebler. 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 struct matches_ > : or_2< matches_::value, Expr, BasicExpr , G0 , G1 > {}; template struct matches_ > : detail::and_2< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_2< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_2< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > > {}; template struct matches_ > : or_3< matches_::value, Expr, BasicExpr , G0 , G1 , G2 > {}; template struct matches_ > : detail::and_3< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_3< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_3< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > > {}; template struct matches_ > : or_4< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 > {}; template struct matches_ > : detail::and_4< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_4< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_4< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > > {}; template struct matches_ > : or_5< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 > {}; template struct matches_ > : detail::and_5< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > , matches_< Expr , BasicExpr , typename G4::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_5< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_5< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > > {}; template struct matches_ > : or_6< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 > {}; template struct matches_ > : detail::and_6< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > , matches_< Expr , BasicExpr , typename G4::proto_grammar > , matches_< Expr , BasicExpr , typename G5::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_6< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_6< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > > {}; template struct matches_ > : or_7< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 > {}; template struct matches_ > : detail::and_7< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > , matches_< Expr , BasicExpr , typename G4::proto_grammar > , matches_< Expr , BasicExpr , typename G5::proto_grammar > , matches_< Expr , BasicExpr , typename G6::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_7< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_7< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > > {}; template struct matches_ > : or_8< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 , G7 > {}; template struct matches_ > : detail::and_8< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > , matches_< Expr , BasicExpr , typename G4::proto_grammar > , matches_< Expr , BasicExpr , typename G5::proto_grammar > , matches_< Expr , BasicExpr , typename G6::proto_grammar > , matches_< Expr , BasicExpr , typename G7::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_8< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child7::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_8< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child7::proto_grammar > > {}; template struct matches_ > : or_9< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 , G7 , G8 > {}; template struct matches_ > : detail::and_9< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > , matches_< Expr , BasicExpr , typename G4::proto_grammar > , matches_< Expr , BasicExpr , typename G5::proto_grammar > , matches_< Expr , BasicExpr , typename G6::proto_grammar > , matches_< Expr , BasicExpr , typename G7::proto_grammar > , matches_< Expr , BasicExpr , typename G8::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_9< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child7::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child8::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_9< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child7::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child8::proto_grammar > > {}; template struct matches_ > : or_10< matches_::value, Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 , G7 , G8 , G9 > {}; template struct matches_ > : detail::and_10< matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > , matches_< Expr , BasicExpr , typename G4::proto_grammar > , matches_< Expr , BasicExpr , typename G5::proto_grammar > , matches_< Expr , BasicExpr , typename G6::proto_grammar > , matches_< Expr , BasicExpr , typename G7::proto_grammar > , matches_< Expr , BasicExpr , typename G8::proto_grammar > , matches_< Expr , BasicExpr , typename G9::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_10< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child7::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child8::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child9::proto_grammar > > {}; template struct matches_< Expr, proto::basic_expr, proto::basic_expr > : and_10< matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child2::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child3::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child4::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child5::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child6::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child7::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child8::proto_grammar > , matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child9::proto_grammar > > {};