Struct template matches Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
Struct template matches
boost::proto::matches — A Boolean metafunction that evaluates whether a given expression type matches a grammar.
Synopsis
template < typename Expr , typename Grammar>
struct matches : mpl::bool_<true-or-false
> {
} ;
Description
<proto::matches<Expr, Grammar>
>наследуется от<mpl::true_
>, если<Expr::proto_grammar
>соответствует<Grammar::proto_grammar
>, и от<mpl::false_
>иначе.
Нетерминальные выражения сопоставляются с грамматикой по следующим правилам:
Дикая карта<
proto::_
>соответствует любому выражению.
Выражение<
proto::basic_expr <AT,
proto::listN
<A0 ,...An >
>
>соответствует грамматике<
proto::basic_expr <BT,
proto::listN
<B0 ,...Bn >
>
>, если<BT
><
proto::_
>или<AT
>, и если<
Ax
>соответствует<
Bx
>для каждого<x
>в<[0,n]
>.
Выражение<
proto::basic_expr <AT,
proto::listN
<A0 ,...An ,U0 ,...Um >
>
>соответствует грамматике<
proto::basic_expr <BT,
proto::listM
<B0 ,...Bn ,proto::vararg <V>
> >
>, если<BT
><
proto::_
>или<AT
>, и если<
Ax
>соответствует<
Bx
>для каждого<x
>в<[0,n]
>и если<
Ux
>соответствует<V
>для каждого<x
>в<[0,m]
>.
Выражение<E
>соответствует<
proto::or_ <B0 ,...Bn >
>, если<E
>соответствует<
Bx
>для<x
>в<[0,n]
>.
Выражение<E
>соответствует<
proto::and_ <B0 ,...Bn >
>, если<E
>соответствует всем<
Bx
>для<x
>в<[0,n]
>.
Выражение<E
>соответствует<
proto::if_ <T,U,V>
>, если:
<U
><
proto::_
>и<V
><
proto::not_ <proto::_ >
>по умолчанию.
Выражение<E
>соответствует<
proto::not_ <T>
>, если<E
>делает, а не <T
>
.
Выражение<E
>соответствует<
proto::switch_ <C, T>
>, если<E
>соответствует<C::case_<boost::result_of<proto::when <proto::_ ,T>(E)>::type>
>. Примечание:<T
>дефолты до<proto::tag_of <proto::_ >()
>
Терминальное выражение может тривиально соответствовать грамматикепрото::_ . Кроме того, терминальное выражение<
proto::basic_expr <AT,
proto::term <A> >
>соответствует грамматике<
proto::basic_expr <BT,proto::term <B> >
>, если<BT
>является<proto::_
>или<AT
>и верно одно из следующих:
<B
>— дикая карта,<
proto::_
>
<A
>это<B
>
<A
><B &
>
<A
><B const &
>
<B
><
proto::exact <A>
>
<B
><
proto::convertible_to <X>
>и<boost::is_convertible<A,X>::value
><true
>
.
<A
><X[M]
>или<X(&)[M]
>и<B
><
X[proto::N ]
>
.
<A
><X(&)[M]
>и<B
><
X(&)[proto::N ]
>
.
<A
><X[M]
>или<X(&)[M]
>и<B
><X*
>
.
<B
><lambda-matches
> <A
>(см. ниже).
Тип<B
><lambda-matches
> <A
>, если верно одно из следующих:
<B
>это<A
>
<B
>— дикая карта,<
proto::_
>
<B
><
T<B0 ,...Bn >
>и<A
><
T<A0 ,...An >
>и для каждого<x
>в<[0,n]
>,<Ax
>и<Bx
>являются такими типами, что<Ax
><lambda-matches
> <Bx
>
Статья Struct template matches раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Reference ::