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

Struct template domain

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 domain

boost::proto::domain — For use in defining domain tags to be used with proto::extends<>, BOOST_PROTO_EXTENDS() and BOOST_PROTO_DEFINE_OPERATORS(). A domain associates an expression type with a generator, and optionally a grammar. It may also have a super-domain. Expressions in a sub-domain are interoperable (i.e. can be combined freely with) expressions in a super-domain. Finally, domains control how non-Proto objects are turned into Proto expressions and how they are combined to form larger Proto expressions.

Synopsis

// In header: <boost/proto/domain.hpp>
template<typename Generator = proto::default_generator, 
         typename Grammar = proto::_, typename Super = unspecified> 
struct domain :  Generator {
  // types
  typedef Grammar   proto_grammar;     
  typedef Generator proto_generator;   
  typedef Super     proto_super_domain;
  // member classes/structs/unions
  // A callable unary MonomorphicFunctionObject that specifies how objects are
  // turned into Proto expressions in this domain. The resulting expression
  // object is suitable for storage in a local variable.
  template<typename T> 
  struct as_expr :  proto::callable {
    // types
    typedef see-below result_type;
    // public member functions
    result_type operator()(T &) const;
  };
  // A callable unary MonomorphicFunctionObject that specifies how objects are
  // turned into Proto expressions in this domain, for use in scenarios where
  // the resulting expression is intended to be made a child of another
  // expression.
  template<typename T> 
  struct as_child :  proto::callable {
    // types
    typedef see-below result_type;
    // public member functions
    result_type operator()(T &) const;
  };
};

Description

Параметр генератора определяет, как новые выражения в домене обрабатываются. Как правило, генератор заворачивает все новые выражения в обертку, которая придает специфическое поведение домена выражениям в его домене. (См.<proto::extends<>>).

Грамматический параметр определяет, является ли данное выражение действительным в пределах домена, и автоматически отключает любые перегрузки оператора, которые могут привести к созданию недействительного выражения. По умолчанию грамматический параметр по умолчанию соответствует wildcard<proto::_ >, что делает все выражения действительными в домене.

Супер параметр объявляет домен, который в настоящее время определяется как поддомен Супер. Выражение в поддомене может свободно сочетаться с выражениями в его супердомене (иегосупердомена и т. д.).

Пример:

 template<typename Expr>
 struct MyExpr;
 struct MyGrammar
   : proto::or_< proto::terminal<_>, proto::plus<MyGrammar, MyGrammar> >
 {};
 // Define MyDomain, in which all expressions are
 // wrapped in MyExpr<> and only expressions that
 // conform to MyGrammar are allowed.
 struct MyDomain
   : proto::domain<proto::generator<MyExpr>, MyGrammar>
 {};
 // Use MyDomain to define MyExpr
 template<typename Expr>
 struct MyExpr
   : proto::extends<Expr, MyExpr<Expr>, MyDomain>
 {
     // ...
 };
            

Шаблоны<domain::as_expr<>>и<domain::as_child<>>определяют, как объекты, не являющиеся Proto, превращаются в терминалы Proto и как должны обрабатываться выражения Proto, прежде чем они будут объединены для формирования более крупных выражений. Они могут быть переопределены в производном домене для настройки. Посмотрите их описания, чтобы понять, как Proto использует эти два шаблона и каково их поведение по умолчанию.


PrevUpHomeNext

Статья Struct template domain раздела 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:31:06/0.0039300918579102/0