Boost.Phoenix:在赋值表达式中使用额外参数时出现问题

时间:2016-01-14 13:17:51

标签: c++ boost boost-phoenix

目前,我正在使用Boost.Phoenix函数式编程库来创建匿名函子。当在仿函数评估中使用只读参数时,我偶然发现了赋值运算符表达式的问题:

using boost::phoenix::arg_names::_1;
int a = 0, int b = 0, int c = 0;
(_1 + 1)(a); // OK
(_1 + 1)(a, 0); // OK
(_1 + 1)(a, 0, 1); // OK
// but...
(_1 = 1)(a); // OK
(_1 = 1)(a, 0); // OK
(_1 = 1)(a, 0, 1); // ERROR: read-only variable is not assignable
(_1 = 1)(a, b, 0); // ERROR
(_1 = 1)(a, b, c); // OK

特别是,我不明白为什么表达式(_1 = 1)(a, 0)工作正常,但是再添加一个常量参数,编译崩溃了。知道发生了什么以及如何解决这个问题吗?

我尝试使用编译器gcc-4.8.1和clang-3.4来升级1.56.0和1.60.0。

0 个答案:

没有答案