【问题标题】:Can't Build Boost Spirit Example conjure2无法构建 Boost Spirit 示例 conjure2
【发布时间】:2022-01-22 18:48:43
【问题描述】:

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

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

Boost.Spirit: Lex + Qi error reporting

在那里的 cmets 中,@hkaiser 写道:

只是一个更新:该示例已在 SVN 中重命名为 conjure2。

我刚刚看了 conjure2。为了了解程序的作用,我打开 main.cpp 并阅读 cmets,我发现的只是:

不再是计算器了,对吧? :-)

这是什么意思?

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

"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"

我做错了什么?

【问题讨论】:

  • 你检查过他们的错误跟踪系统吗?对我来说,这听起来像是一个文档错误。
  • “我试图编译程序但它失败了” - 如何?
  • 我试过了,它在 boost 1.69 和 1.75 之间的某个地方开始失败;这不是文档错误,而是可能由 Phoenix 或实用程序库的更改引入的错误。应该向上游报告。

标签: c++ boost


【解决方案1】:

解决方法是把它放在 lexer_def.hpp 的顶部:

#include <boost/phoenix/operator.hpp>

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

【讨论】:

  • 感谢您的自我回答。我注意到你在邮件列表上的发现。很难找到,感谢您的贡献!也许现在您将拥有足够的“业力”(我们称之为声誉:))。干杯
  • 我是 reddit 的难民 :) 感谢您确认问题所在,干杯
猜你喜欢
  • 2011-07-23
  • 2011-04-22
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多