gpt4 book ai didi

c++ - Boost.Spirit mini_xml2.cpp 示例无法由 C++11、Boost 1.55 编译

转载 作者:太空狗 更新时间:2023-10-29 21:22:25 25 4
gpt4 key购买 nike

c++0x 编译器无法编译 boost.spirit 示例 mini_xml2.cpp (并且没有来自非 c++0x 编译器的错误)

$> c++ -std=c++0x mini_xml2.cpp (errors)
$> c++ mini_xml2.cpp (no errors)

错误日志放在here .我怀疑该问题与非终结符属性(第 159-163 行)有关,但我可能错了。

  • c++ 版本 (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
  • boost 版本 1.55

我创建了 issue在 boost 跟踪器上,但没有答案。

有没有人有同样的错误?

已解决:我找到了解决方案 here .

// Add this macro
#define BOOST_SPIRIT_USE_PHOENIX_V3

最佳答案

如前所述,在现代编译器上,您实际上需要使用 Phoenix V3,因为 Phoenix V2 依赖于结果协议(protocol),而在较新版本的 boost 库中并不总是包含该协议(protocol)不再。

此外,在某些编译器(AFAIK 至少是 clang)上,默认情况下启用 BOOST_RESULT_OF_USE_DECLTYPE 方法,这可能会导致支持库省略(成本更高的)TR1 结果协议(protocol)。

好消息是,在我们 signaled this on the user list 作为一个反复出现的绊脚石,官方决定在这里:

Farewell Phoenix-2 Dec 14, 2013; 3:38am (Joel de Guzman)
(also blog post)

Boost C++... After more than a decade, I finally retired Phoenix-2 from the Boost Spirit code base. I feel sad. It's like farewell to a good friend. Onwards to Phoenix-3.

那只是 7 天前:)

所以在(不久的)将来这个问题将会得到解决。

关于c++ - Boost.Spirit mini_xml2.cpp 示例无法由 C++11、Boost 1.55 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com