glossary.qbk

来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 92 行

QBK
92
字号
[/ / Copyright (c) 2008 Eric Niebler / / Distributed under the Boost Software License, Version 1.0. (See accompanying / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /][/===============][section Glossary][/===============][def _T_ [~T]][template anchor[x] '''<anchor id="boost_proto.users_guide.glossary.'''[x]'''" />'''][variablelist  [ [ [anchor callable_transform] callable transform]      [A transform of the form `R(A0,A1,...)` (i.e., a function type) where        `proto::is_callable<R>::value` is `true`. `R` is treated as a polymorphic        function object and the arguments are treated as transforms that yield the        arguments to the function object.] ]  [ [ [anchor context] context]      [In Proto, the term /context/ refers to an object that can be passed, along        with an expression to evaluate, to the `proto::eval()` function. The context        determines how the expression is evaluated. All context structs define a        nested `eval<>` template that, when instantiated with a node tag type (e.g.,        `proto::tag::plus`), is a binary polymorphic function object that accepts an        expression of that type and the context object. In this way, contexts       associate behaviors with expression nodes.] ]  [ [ [anchor domain] domain]      [In Proto, the term /domain/ refers to a type that associates expressions        within that domain with a /generator/ for that domain and optionally a        /grammar/ for the domain. Domains are used primarily to imbue expressions        within that domain with additional members and to restrict Proto's operator        overloads such that expressions not conforming to the domain's grammar are        never created. Domains are empty structs that inherit from       `proto::domain<>`.]]  [ [ [anchor dsel] domain-specific embedded language]      [A domain-specific language implemented as a library. The language in which        the library is written is called the "host" language, and the language        implemented by the library is called the "embedded" language.]]  [ [ [anchor dsl] domain-specific language]      [A programming language that targets a particular problem space by providing        programming idioms, abstractions and constructs that match the constructs        within that problem space.]]  [ [ [anchor expression] expression]      [In Proto, an /expression/ is a heterogeneous tree where each node is either        an instantiation of `boost::proto::expr<>` or some type that is an extension        (via `boost::proto::extends<>` or `BOOST_PROTO_EXTENDS()`) of such an        instantiation.]]  [ [ [anchor expression_template] expression template]      [A C++ technique using templates and operator overloading to cause        expressions to build trees that represent the expression for lazy evaluation        later, rather than evaluating the expression eagerly. Some C++ libraries use        expression templates to build domain-specific embedded languages.]]  [ [ [anchor generator] generator]      [In Proto, a /generator/ is a unary polymorphic function object that you        specify when defining a /domain/. After constructing a new expression, Proto        passes the expression to your domain's generator for further processing.        Often, the generator wraps the expression in an extension wrapper that adds        additional members to it.]]  [ [ [anchor grammar] grammar]      [In Proto, a /grammar/ is a type that describes a subset of Proto expression        types. Expressions in a domain must conform to that domain's grammar. The        `proto::matches<>` metafunction evaluates whether an expression type matches        a grammar. Grammars are either primitives such as `proto::_`, composites        such as `proto::plus<>`, control structures such as `proto::or_<>`, or some        type derived from a grammar.]]  [ [ [anchor object_transform] object transform]      [A transform of the form `R(A0,A1,...)` (i.e., a function type) where        `proto::is_callable<R>::value` is `false`. `R` is treated as the type of an        object to construct and the arguments are treated as transforms that yield        the parameters to the constructor.]]  [ [ [anchor polymorphic_function_object] polymorphic function object]      [An instance of a class type with an overloaded function call operator and a        nested `result_type` typedef or `result<>` template for calculating the        return type of the function call operator.]]  [ [ [anchor primitive_transform] primitive transform]      [A type that defines a kind of polymorphic function object that takes three        arguments: expression, state, and data. Primitive transforms can be used to        compose callable transforms and object transforms.]]  [ [ [anchor transform] transform]      [Transforms are used to manipulate expression trees. They come in three        flavors: primitive transforms, callable transforms, or object transforms. A        transform `_T_` can be made into a ternary polymorphic function object with        `proto::when<>`, as in `proto::when<proto::_, _T_>`. Such a function object        accepts /expression/, /state/, and /data/ parameters, and computes a result        from them.]]][endsect]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?