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 ::