Struct template expr
boost::proto::expr — Representation of a node in an expression tree.
 
Synopsis
template<typename Tag, typename Args, long Arity = Args::arity> 
struct expr {
  
  typedef Tag                                   proto_tag;         
  typedef Args                                  proto_args;        
  typedef mpl::long_< Arity >                   proto_arity;       
  typedef proto::default_domain                 proto_domain;      
  typedef proto::basic_expr< Tag, Args, Arity > proto_grammar;     
  typedef expr                                  proto_base_expr;   
  typedef expr                                  proto_derived_expr;
  typedef typename Args::childN                 proto_childN;        
  
  template<typename Signature> 
  struct result {
    
    typedef unspecified type;
  };
  
  template<typename... A> static expr const make(A const &...);
  
  expr & proto_base();
  expr const & proto_base() const;
  template<typename A> unspecified operator=(A &);
  template<typename A> unspecified operator=(A const &);
  template<typename A> unspecified operator=(A &) const;
  template<typename A> unspecified operator=(A const &) const;
  template<typename A> unspecified operator[](A &);
  template<typename A> unspecified operator[](A const &);
  template<typename A> unspecified operator[](A &) const;
  template<typename A> unspecified operator[](A const &) const;
  template<typename... A> unspecified operator()(A const &...);
  template<typename... A> unspecified operator()(A const &...) const;
  
  proto_childN childN;  
  static const long proto_arity_c;  
};
Description
Прото::expr<> - узел в дереве шаблонов выражения. Это контейнер для своих детей-поддеревьев. Он также служит терминальными узлами дерева.
Tag - это тип, представляющий операцию, закодированную этим выражением. Это, как правило, один из конструкций в boost::proto::tag пространства имен, но это не должно быть. Если Arity 0, то это expr<> Тип представляет лист в дереве экспрессии.
Args - это список типов, представляющих детей этого выражения. Это моментация одного из прото::list1<>, прото::list2<> и т.д. Типы детей должны быть либо прото::expr<> или прото::basic_expr<> (или расширения через прото::extends<> или BOOST_PROTO_EXDS(1>), если только Арити не 0>Args может быть.
прото::expr<> - это действительная последовательность случайного доступа Fusion, где элементы последовательности являются детскими выражениями.
expr public static functions
- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Количество представленных аргументов должно быть max(Arity,1).