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
公共成员函数template<typename Expr> typename proto::result_of::flatten< Expr >::type const operator()(Expr & expr) const;
返回一个 Fusion 前向序列,表示 expr
的扁平化视图。
template<typename Expr> typename proto::result_of::flatten< Expr const >::type const operator()(Expr const & expr) const;
返回一个 Fusion 前向序列,表示 expr
的扁平化视图。