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
Description
Параметр генератора определяет, как новые выражения в домене обрабатываются. Как правило, генератор заворачивает все новые выражения в обертку, которая придает специфическое поведение домена выражениям в его домене. (См.<proto::extends<>
>).
Грамматический параметр определяет, является ли данное выражение действительным в пределах домена, и автоматически отключает любые перегрузки оператора, которые могут привести к созданию недействительного выражения. По умолчанию грамматический параметр по умолчанию соответствует wildcard<proto::_
>, что делает все выражения действительными в домене.
Супер параметр объявляет домен, который в настоящее время определяется как поддомен Супер. Выражение в поддомене может свободно сочетаться с выражениями в его супердомене (иегосупердомена и т. д.).
Пример:
template<typename Expr>
struct MyExpr;
struct MyGrammar
: proto::or_< proto::terminal<_>, proto::plus<MyGrammar, MyGrammar> >
{};
struct MyDomain
: proto::domain<proto::generator<MyExpr>, MyGrammar>
{};
template<typename Expr>
struct MyExpr
: proto::extends<Expr, MyExpr<Expr>, MyDomain>
{
};
Шаблоны<domain::as_expr<>
>и<domain::as_child<>
>определяют, как объекты, не являющиеся Proto, превращаются в терминалы Proto и как должны обрабатываться выражения Proto, прежде чем они будут объединены для формирования более крупных выражений. Они могут быть переопределены в производном домене для настройки. Посмотрите их описания, чтобы понять, как Proto использует эти два шаблона и каково их поведение по умолчанию.