Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Struct template matches

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Struct template matches

boost::proto::matches — A Boolean metafunction that evaluates whether a given expression type matches a grammar.

Synopsis

// In header: <boost/proto/matches.hpp>
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> >, если:

    • < boost::result_of<proto::when<proto::_,T>(E)>::type::value >является<true>и<E>матчей<U>,или.
    • < boost::result_of<proto::when<proto::_,T>(E)>::type::value ><false>и<E>матчи<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>


PrevUpHomeNext

Статья Struct template matches раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:00:57/0.0057690143585205/1