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

时间:2012-10-20 19:40:44

标签: c++ boost lazy-evaluation boost-phoenix

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

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

但是对lazy()的调用没有编译。那么问题是有什么替代品而不是functor类来快速创建单行phoenix::function吗?

1 个答案:

答案 0 :(得分:5)

由于foo的类型不是默认可构造的,lazy需要初始值设定项:

boost::phoenix::function<decltype(foo)> lazy { foo };