Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: /// \file matches_.hpp Chris@16: /// Definitions of matches_ specializations Chris@16: // Chris@16: // Copyright 2008 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_2< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_2< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: matches_< Expr , BasicExpr , typename G1::proto_grammar > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_2< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_2< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child1::proto_grammar > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_3< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_3< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_3< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_3< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_4< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_4< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: matches_< Expr , BasicExpr , typename G1::proto_grammar > , matches_< Expr , BasicExpr , typename G2::proto_grammar > , matches_< Expr , BasicExpr , typename G3::proto_grammar > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_4< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_4< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_5< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_5< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_5< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_5< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_6< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_6< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_6< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_6< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_7< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_7< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_7< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_7< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_8< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 , G7 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_8< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_8< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_8< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_9< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 , G7 , G8 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_9< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_9< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_9< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : or_10< Chris@16: matches_::value, Chris@16: Expr, BasicExpr , G0 , G1 , G2 , G3 , G4 , G5 , G6 , G7 , G8 , G9 Chris@16: > Chris@16: {}; Chris@16: Chris@16: template Chris@16: struct matches_ > Chris@16: : detail::and_10< Chris@16: matches_< Expr , BasicExpr , typename G0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_10< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {}; Chris@16: template Chris@16: struct matches_< Expr, proto::basic_expr, proto::basic_expr > Chris@16: : and_10< Chris@16: matches_< typename detail::expr_traits::value_type::proto_derived_expr , typename detail::expr_traits::value_type::proto_grammar , typename Args2::child0::proto_grammar >::value, Chris@16: 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 > Chris@16: > Chris@16: {};