c++ - 无法构建 Boost Spirit 示例 conjure2

我正在使用 boost (1.77) 灵气和词法分析器。错误处理程序需要一个字符流,但我向它传递了一个标记流,导致出现乱码错误消息。

我相信下面的线程指向一个解决方案:

Boost.Spirit: Lex + Qi error reporting

在评论中,@hkaiser 写道:

Just an update: the example has been renamed in SVN to conjure2.

我刚刚看了一眼 conjure2。为了理解程序的作用,我打开 main.cpp 并阅读注释,我发现的是:

Not a calculator anymore, right? :-)

这是什么意思?

我试图编译程序,但失败了:

"error C2516: 'boost::phoenix::evaluator::impl<const Expr&, 
boost::phoenix::vector2boost::mpl::true_,
boost::phoenix::is_nullary,boost::proto::envns_::empty_env>::result_type': 
is not a legal base class"

我做错了什么?

最佳答案

修复方法是将它放在 lexer_def.hpp 的顶部:

#include <boost/phoenix/operator.hpp>

这应该定义缺少的表达式模板运算符,以防止编译词法分析器语义操作。

https://stackoverflow.com/questions/70433905/

相关文章:

python - 将二元运算符添加到 z3

python - pandas mysql 如何使用 Dataframe 更新某些行列

c++ - 模板数据结构 - 访问从抽象类派生的模板类的 getter 和 setter

typescript - 数组中泛型的联合

javascript - 如何制作一种类型取决于参数

algorithm - 加权图的最短路径,但权重有点特殊

javascript - React 中状态变量的顺序重要吗?

c# - 检查ClassDeclarationSyntax是否实现了特定接口(interface)(

c# - 在 Visual Studio 中替换后删除空行

python - 是否可以在 discord.py 中对不同的前缀使用不同的命令?