Boost Phoenix文档here表示我可以创建自己的(lambda)参数,而不是_1
/ arg1
,_2
,arg2
等。所以,从这样的代码开始:
#include <iostream>
#include <boost/phoenix.hpp>
int main(int argc, char *argv[]) {
std::cout << (boost::phoenix::arg_names::_1)(17) << std::endl;
return 0;
}
...输出17
,我的目标是使用myarg1
的第一步。文档建议我先#include <boost/spirit/home/phoenix/core/argument.hpp>
。但是,这样做会导致一系列编译错误:错误:重新定义'struct boost :: phoenix :: detail :: error_expecting_arguments'。
如果没有包含arguments.hpp文件的,我注意到我可以声明boost::phoenix::argument<0>
类型的变量。当我尝试声明一个关键类型的变量boost::phoenix::actor< boost::phoenix::argument<0> >
时,我再次收到许多错误;这一次从:错误开始:没有名为'proto_base_expr'的类型。如何定义自己的lambda参数?