Struct template default_eval Boost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
Struct template default_eval
boost::proto::context::default_eval —
A BinaryFunction that accepts a Proto expression and a context, evaluates
each child expression with the context, and combines the result using the
standard C++ meaning for the operator represented by the current expression
node.
Synopsis
template < typename Expr , typename Context>
struct default_eval {
typedef typename Expr :: tag_type Tag ;
typedef see - below result_type ;
result_type operator ( ) ( Expr & , Context & ) const ;
static Expr & s_expr ;
static Context & s_context ;
} ;
Description
Пусть<OP>будет оператором C++, соответствующим<Expr::proto_tag>. Например, если<Tag>это<
proto::tag::plus >, пусть<
OP>будет<+>.
Поведение этого класса определяется в терминах C++0x.<decltype>Ключевые слова. В системах, где это ключевое слово недоступно, Proto использует Boost. Тип библиотеки для приближения поведения.
default_eval
public
types
typedef см. - ниже result_type ;
Если<Tag>соответствует оператору унарного префикса, то тип результата
<decltype (
OP proto::eval ( proto::child ( s_expr ) , s_context )
) >
Если<Tag>соответствует унарному оператору постфикса, то тип результата
<decltype (
proto::eval ( proto::child ( s_expr ) , s_context ) OP
) >
Если<Tag>соответствует двоичному оператору фиксации, то тип результата
<decltype (
proto::eval ( proto::left ( s_expr ) , s_context ) OP
proto::eval ( proto::right ( s_expr ) , s_context )
) >
Если<Tag>является<
proto::tag::subscript
>, то тип результата
<decltype (
proto::eval ( proto::left ( s_expr ) , s_context ) [
proto::eval ( proto::right ( s_expr ) , s_context ) ]
) >
Если<Tag><
proto::tag::if_else_
>, то результат типа
<decltype (
proto::eval ( proto::child_c < 0 > ( s_expr ) , s_context ) ?
proto::eval ( proto::child_c < 1 > ( s_expr ) , s_context ) :
proto::eval ( proto::child_c < 2 > ( s_expr ) , s_context )
) >
Если<Tag><
proto::tag::function
>, то результат типа
<decltype (
proto::eval ( proto::child_c < 0 > ( s_expr ) , s_context ) (
proto::eval ( proto::child_c < 1 > ( s_expr ) , s_context ) ,
...
proto::eval ( proto::child_c < N > ( s_expr ) , s_context ) )
) >
default_eval public member functions
<result_type operator ( ) ( Expr & expr, Context & context) const ; >Если<Tag>соответствует унарному префиксному оператору, то возврат
<OPproto::eval (proto::child (expr), context) >
Если<Tag>соответствует унарному оператору постфикса, то возврат
<proto::eval (proto::child (expr), context) OP >
Если<Tag>соответствует двоичному оператору фиксации, то возврат
<proto::eval (proto::left (expr), context) OP
proto::eval (proto::right (expr), context) >
Если<Tag><
proto::tag::subscript >, то возвращайтесь
<proto::eval (proto::left (expr), context) [
proto::eval (proto::right (expr), context) ] >
.
Если<Tag><
proto::tag::if_else_ >, то возвращайтесь
<proto::eval (proto::child_c <0>(expr), context) ?
proto::eval (proto::child_c <1>(expr), context) :
proto::eval (proto::child_c <2>(expr), context) >
.
Если<Tag><
proto::tag::function >, то возвращайтесь
<proto::eval (proto::child_c <0>(expr), context) (
proto::eval (proto::child_c <1>(expr), context),
...
proto::eval (proto::child_c <N>(expr), context) ) >
.
Параметры:
<context>
Контекст оценки
<expr>
Текущее выражение
Статья Struct template default_eval раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Reference ::