c++ - 有没有办法确定 C++ 编译器实现的语言特性?

标签 c++ c++11 c++14

不同的 C++ 编译器在不同的时间点实现不同的语言特性(例如,参见 clang C++ statusgcc 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/

相关文章:

c++ - 访问控制对已删除的构造函数是否重要?

c++ - 在 C++ Builder XE2 中重命名 VCL Form 类

c++ - 是否有像 std::accumulate 这样的东西在迭代器上运行?

c++ - 给定头节点,如何递归地找到链表中的最大项?

c++ - 可变模板别名作为模板参数

c++ - 无序集删除/插入循环

c++ - 如何对 Eigen 中的二维数组的列执行简单的算术运算

c++ - 当操作数类型为 short 时编译模板标量 vector 加法运算符失败

c++ - 问题产生应用程序

c++ - 指向模板接口(interface)的唯一指针