所以我使用GCC尝试了C ++ 0x的一些功能,但我也想确保代码可以使用标准的C ++编译器进行编译。所以我正在使用带有ifdefs的__cplusplus宏来排除C ++ 0x代码。
我发现__cplusplus的值不是199711L,而是1!经过一段谷歌搜索后,我发现this表示GCC不是一个完全符合要求的实现。
是否有完全符合要求的实施?我知道clang,gcc和msvc。 GCC不是一个完全符合要求的实现,是clang还是msvc?
答案 0 :(得分:4)
我相信Comeau完全符合要求。他们甚至实现了模板导出。
更重要的是,你可以在线试试,听起来这对你正在做的事情有帮助。
答案 1 :(得分:4)
没有。可以使用符合标准的编译器,但语言非常复杂。在编译器编写者努力工作的语言中,存在着角落,模糊,有时甚至完全矛盾。
确保代码符合标准的最佳方法是对其进行大脑编译,因为您可以验证符合标准的内容。当然,这取决于你完全理解标准的能力;以及任何人是否能做到这一点都是一个全新的问题。 ;)
答案 2 :(得分:3)
由于实施export关键字的复杂性过高,Comeau以外的任何编译器都不太可能在不久的将来完全兼容。出于原因,请参阅Why We Can't Afford Export。