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