boost::spirit 中的运算符优先级?
我使用spirit mini_c 样本做了一些测试。不幸的是,它没有按预期保持运算符优先级:
int main()
{
return 3 > 10 || 3 > 1;
}
计算结果为 0。
return (3 > 10) || (3 > 1);
返回 1
我试图移动“||”的定义和“&&”到构造函数的最顶层,
template <typename Iterator>
expression<Iterator>::expression(
但这不会改变任何东西。这怎么能解决呢。我正在使用 boost 1.3.38。
I made some tests using the spirit mini_c sample. Unfortunately it does not keep the operator precedence as expected:
int main()
{
return 3 > 10 || 3 > 1;
}
evaluates to 0.
return (3 > 10) || (3 > 1);
returns 1
I tried to move the definition of "||" and "&&" to the very top in the constructor of
template <typename Iterator>
expression<Iterator>::expression(
but that does not change anything. How can that be fixed. I am using boost 1.3.38.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已确认,这是 mini_c 示例中与运算符优先级相关的错误。我提交了对 SVN 的修复,该修复将在 Boost V1.45 中提供。这是我在头文件 mini_cb.hpp 中更改的内容:
旧代码:
新代码:
Confirmed, that's a bug in the mini_c example related to operator precedence. I committed a fix to SVN, which will be available in Boost V1.45. Here is what I changed in the header file mini_cb.hpp:
old code:
new code: