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