使用boost::phoenix::function我遇到了一些问题。据我所知,这个懒函数重新验证函数作为其模板参数。我必须定义一个仿函数类/结构,然后将其作为模板参数传递给实例化。但它太长而且多余。我可以使用其他一些可调用类型来创建phoenix::function
(函数引用/指针等)吗?我试过lambdas
:
const auto foo = [] { cout <<"Test"; }
const boost::phoenix::function<decltype(foo)> lazy;
但是对lazy()
的调用没有编译。那么问题是有什么替代品而不是functor类来快速创建单行phoenix::function
吗?
答案 0 :(得分:5)
由于foo
的类型不是默认可构造的,lazy
需要初始值设定项:
boost::phoenix::function<decltype(foo)> lazy { foo };