boost :: phoenix ::功能遇到麻烦

Troubles with boost::phoenix::function

本文关键字:麻烦 遇到 phoenix boost 功能      更新时间:2023-10-16

使用boost :: phoenix ::功能我遇到了一些问题。据我所知,此懒惰函数要求函子作为其模板参数。我必须定义一个函子类/结构,然后将其作为实例化的模板参数传递。但这太长又多余。我可以将其他一些可呼叫类型用于phoenix::function创建(功能参考/指针等)吗?我尝试了lambdas

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

,但致电lazy()没有编译。因此,问题是否有其他选择,而不是快速单行phoenix::function创建的函数类?

由于foo的类型不默认可构造,因此lazy需要一个初始化器:

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