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行),但我可能错了。
我在增强跟踪器上创建了issue,但没有回答。
有人有同样的错误吗?
解决了:我找到了解决方案here。
// Add this macro
#define BOOST_SPIRIT_USE_PHOENIX_V3
答案 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天前:)
所以在(近)未来这个问题将得到解决。