Struct template when
boost::proto::when — A grammar element and a PrimitiveTransform that associates
a transform with the grammar.
Synopsis
template<typename Grammar, typename PrimitiveTransform = Grammar>
struct when : PrimitiveTransform {
typedef typename Grammar::proto_grammar proto_grammar;
};
Description
Используйте<proto::when<>
>, чтобы переопределить преобразование грамматики по умолчанию с пользовательским преобразованием. Он используется при составлении больших преобразований, связывая меньшие преобразования с индивидуальными правилами в вашей грамматике, как в следующем преобразовании, которое подсчитывает количество терминалов в выражении.
struct CountLeaves :
proto::or_<
proto::when<proto::terminal<proto::_>, mpl::next<proto::_state>()>,
proto::otherwise<proto::fold<proto::_, proto::_state, CountLeaves> >
>
{};
В<proto::when<G, T>
>, когда<T
>является типом класса, этоПримитивная трансформацияи имеют следующие эквивалентности:
<boost::result_of<proto::when<G,T>(E,S,V)>::type
>То же самое, что<boost::result_of<T(E,S,V)>::type
>.
<proto::when<G,T>()(e,s,d)
>то же, что<T()(e,s,d)
>.