Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

结构体模板 basic_expr

boost::proto::basic_expr — 表达式树中节点的简化表示。

概要

// In header: <boost/proto/expr.hpp>

template<typename Tag, typename Args, long Arity = Args::arity> 
struct basic_expr {
  // types
  typedef Tag                         proto_tag;         
  typedef Args                        proto_args;        
  typedef mpl::long_< Arity >         proto_arity;       
  typedef proto::basic_default_domain proto_domain;      
  typedef basic_expr                  proto_grammar;     
  typedef basic_expr                  proto_base_expr;   
  typedef basic_expr                  proto_derived_expr;
  typedef typename Args::childN       proto_childN;        // For each N in [0,max(Arity,1)).

  // public static functions
  template<typename... A> static basic_expr const make(A const &...);

  // public member functions
  basic_expr & proto_base();
  basic_expr const & proto_base() const;
};

描述

proto::basic_expr<> 是表达式模板树中的一个节点。它是其子树的容器。它也作为树的终端节点。

Tag 是表示此表达式编码的操作的类型。它通常是 boost::proto::tag 命名空间中的结构体之一,但并非必须如此。如果 Arity 为 0,则此 expr<> 类型表示表达式树中的叶节点。

Args 是表示此表达式子节点的类型列表。它是 proto::list1<>proto::list2<> 等之一的实例化。子类型必须全部是 proto::expr<>proto::basic_expr<>&(或通过 proto::extends<>BOOST_PROTO_EXTENDS() 扩展的类型),除非 Arity 为 0,在这种情况下,Args 必须是 proto::term<T>,其中 T 可以是任何类型。

proto::basic_expr<> 是一个有效的 Fusion 随机访问序列,其中序列的元素是子表达式。

basic_expr 公共静态函数

  1. template<typename... A> static basic_expr const make(A const &... a);

    要求

    提供的参数数量必须为 max(Arity,1)

    返回值

    使用指定参数初始化的新 basic_expr 对象。

basic_expr 公共成员函数

  1. basic_expr & proto_base();

    返回值

    *this

  2. basic_expr const & proto_base() const;

    这是一个重载的成员函数,为了方便而提供。它与上述函数的区别仅在于它接受的参数。


PrevUpHomeNext