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

Concept Domain
PrevUpHomeNext

Concept Domain

Domain

Description

A Domain creates an association between expressions and a so-called generator, which is a function that maps an expression in the default domain to an equivalent expression in this Domain. It also associates an expression with a grammar, to which all expressions within this Domain must conform.

Associated types

  • proto_grammar

    Domain::proto_grammar

    The grammar to which every expression in this Domain must conform.

  • proto_generator

    Domain::proto_generator

    A Unary Polymorphic Function that accepts expressions in the default domain and emits expressions in this Domain.

  • proto_super_domain

    Domain::proto_super_domain

    The Domain that is a super-domain of this domain, if any such domain exists. If not, it is some unspecified type.

  • result_type

    boost::result_of::type

    The type of the result of applying proto_generator to the specified expression type. The result is required to model Expr. The domain type associated with result_type (result_type::proto_domain) is required to be the same type as this Domain.

  • as_expr_result_type

    Domain::as_expr::result_type
    

    The result of converting some type to a Proto expression type in this domain. This is used, for instance, when calculating the type of a variable to hold a Proto expression. as_expr_result_type models Expr.

  • as_child_result_type

    Domain::as_child::result_type
    

    The result of converting some type to a Proto expression type in this domain. This is used, for instance, to compute the type of an object suitable for storage as a child in an expression tree. as_child_result_type models Expr.

    Notation

    Domain
    A type playing the role of domain-type in the Domain concept.
    Expr
    A type playing the role of expression-type in the Domain concept.
    Object
    A type playing the role of object-type in the Domain concept.
    d
    Object of type Domain
    e
    Object of type Expr
    o
    Object of type Object

    Valid expressions

    Name Expression Type Semantics

    Apply Generator

    d(e)

    result_type

    The result of applying proto_generator to the specified expression.

    As Expression

    Domain::as_expr< Object >()(o)

    as_expr_result_type

    The result of converting some object to a Proto expression in this domain. It returns a Proto expression object that is suitable for storage in a variable. It should return a new object, which may be a copy of the object passed in.

    As Child

    Domain::as_child< Object >()(o)

    as_child_result_type

    The result of converting some object to a Proto expression in this domain. It returns an object suitable for storage as a child in an expression tree, which may simply be a reference to the object passed in.

    Models

    • boost::proto::default_domain

    PrevUpHomeNext