使用boost :: phoenix :: function解决问题

Ole*_*rov 3 c++ boost lazy-evaluation boost-phoenix

使用boost :: phoenix :: function我遇到了一些问题.据我所知这个懒函数重新验证函数作为其模板参数.我必须定义一个仿函数类/结构,然后将其作为模板参数传递给实例化.但它太长而且多余.我可以使用其他一些可调用类型进行phoenix::function创建(函数引用/指针等)吗?我试过了lambdas:

 const auto foo = [] { cout <<"Test"; }
 const boost::phoenix::function<decltype(foo)> lazy;
Run Code Online (Sandbox Code Playgroud)

但是打电话lazy()没编译.那么问题是有任何替代方案而不是快速单行phoenix::function创建的仿函数类吗?

Luc*_*ton 5

由于类型foo不是默认可构造的,因此lazy需要初始化程序:

boost::phoenix::function<decltype(foo)> lazy { foo };
Run Code Online (Sandbox Code Playgroud)