Boost C++ 库

...世界上备受推崇、设计精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

Struct flatten - Boost C++ 函数库
PrevUpHomeNext

Struct flatten

boost::proto::functional::flatten — 一个 多态函数对象类型,它返回 Proto 表达式树的“扁平化”视图。

提要

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


struct flatten :  proto::callable {
  // member classes/structs/unions
  template<typename This, typename Expr> 
  struct result<This(Expr)> :  result< This(Expr const &) > {
  };
  template<typename This, typename Expr> 
  struct result<This(Expr &)> :  proto::result_of::flatten< Expr > {
  };

  // public member functions
  template<typename Expr> 
    typename proto::result_of::flatten< Expr >::type const 
    operator()(Expr &) const;
  template<typename Expr> 
    typename proto::result_of::flatten< Expr const >::type const 
    operator()(Expr const &) const;
};

描述

一个 多态函数对象类型,它返回 Proto 表达式树的“扁平化”视图。对于顶部节点标签类型为 T 的树,扁平化序列的元素通过递归进入具有相同标签类型的每个子节点并返回不同类型的那些节点来确定。例如,与表达式 a | b | c 对应的 Proto 表达式树具有一个扁平化视图,其元素为 [a, b, c],即使该树被分组为 ((a | b) | c)

生成的视图是一个 Fusion 前向序列。

flatten 公共成员函数

  1. template<typename Expr> 
      typename proto::result_of::flatten< Expr >::type const 
      operator()(Expr & expr) const;

    返回一个 Fusion 前向序列,表示 expr 的扁平化视图。

  2. template<typename Expr> 
      typename proto::result_of::flatten< Expr const >::type const 
      operator()(Expr const & expr) const;

    返回一个 Fusion 前向序列,表示 expr 的扁平化视图。


PrevUpHomeNext