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

时间:2013-12-21 17:13:00

标签: c++ boost c++11 boost-spirit

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
  • 提升版本1.55

我在增强跟踪器上创建了issue,但没有回答。

有人有同样的错误吗?

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

// Add this macro
#define BOOST_SPIRIT_USE_PHOENIX_V3

1 个答案:

答案 0 :(得分:3)

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

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

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

  

Farewell Phoenix-2 2013年12月14日;凌晨3:38(Joel de Guzman)
(也blog post

     

Boost C ++ ......十多年后,我终于退出了凤凰卫视2   提升精神代码库。我很难过。这就像告别一位好朋友一样。向前   凤凰城3。

那只是7天前:)

所以在(近)未来这个问题将得到解决。