boost::proto::functional::flatten::result<This(Expr)>
template<typename This, typename Expr> struct result<This(Expr)> : proto::result_of::flatten< typename boost::remove_reference< Expr >::type > { };