Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards


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.


// In header: <boost/proto/context/default.hpp>

template<typename Expr, typename Context> 
struct default_eval {
  // types
  typedef typename Expr::tag_type Tag;          // For exposition only
  typedef see-below               result_type;

  // public member functions
  result_type operator()(Expr &, Context &) const;

  // public data members
  static Expr & s_expr;  // For exposition only
  static Context & s_context;  // For exposition only


Let OP be the C++ operator corresponding to Expr::proto_tag. (For example, if Tag is proto::tag::plus, let OP be +.)

The behavior of this class is specified in terms of the C++0x decltype keyword. In systems where this keyword is not available, Proto uses the Boost.Typeof library to approximate the behavior.

default_eval public types

  1. typedef see-below result_type;

default_eval public member functions

  1. result_type operator()(Expr & expr, Context & context) const;



    The evaluation context


    The current expression