不同的 C++ 编译器在不同的时间点实现不同的语言特性(例如,参见 clang C++ status 和 gcc c++ status ;其他编译器也是如此)。创建 C++ 库时,通常需要支持最新功能以改善用户体验。当支持新功能而不是随处实现的通用子集时,了解编译器支持哪些功能很有帮助,而不必为每个编译器支持一组版本号。
是否存在可在编译时使用的合理标准化的功能测试集,以确定编译器是否支持特定语言功能?
最佳答案
您可能无法比 Boost.Config 做得更好图书馆。它为各种 C++11 和 C++14 功能定义预处理器宏,这些功能在 C++11/14-ish 编译器(如 VC++)上不受普遍支持。它与您要达到的标准一样接近。
IIRC,它的工作方式类似于 autoconf,通过预先构建(并在必要时执行)一堆简单的测试程序。我不认为你会得到任何完全在编译时运行的东西,仅仅是因为有些东西在一个实现中是关键字,而在另一个实现中是语法错误。
关于c++ - 有没有办法确定 C++ 编译器实现的语言特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298028/