For matching one of a set of alternate grammars. More...
#include <proto_fwd.hpp>
Classes | |
struct | impl |
struct | impl< Expr &, State, Data > |
Public Types | |
typedef or_ | proto_grammar |
typedef or_ < BOOST_PP_ENUM_PARAMS(BOOST_PROTO_MAX_LOGICAL_ARITY, G) > | transform_type |
Public Member Functions | |
BOOST_PROTO_CALLABLE () typedef X proto_is_transform_ | |
BOOST_FORCEINLINE boost::proto::detail::apply_transform < transform_type(Expr const &)> ::result_type | operator() (Expr &&e) const |
BOOST_FORCEINLINE boost::proto::detail::apply_transform < transform_type(Expr const &, State const &)> ::result_type | operator() (Expr &&e, State &&s) const |
BOOST_FORCEINLINE boost::proto::detail::apply_transform < transform_type(Expr const &, State const &, Data const &)> ::result_type | operator() (Expr &&e, State &&s, Data &&d) const |
For matching one of a set of alternate grammars.
Alternates tried in order to avoid ambiguity. When used as a transform, or_<>
applies the transform associated with the first grammar that matches the expression.
An expression type E
matches or_<B0,B1,...Bn>
if E
matches any Bx
for x
in [0,n)
.
When applying or_<B0,B1,...Bn>
as a transform with an expression e
of type E
, state s
and data d
, it is equivalent to Bx()(e, s, d)
, where x
is the lowest number such that matches<E,Bx>value
is true
.
typedef or_ boost::proto::or_<>::proto_grammar |
|
inherited |
|
inherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |