不同的C++编译器在不同的时间点实现各种语言功能(例如,参见clang C++ status和gcc c ++ status ;同样适用于其他编译器).在创建C++库时,通常需要支持最新功能以改善用户体验.当支持新功能而不是在任何地方实现的公共子集时,了解编译器支持哪些功能而不必为每个编译器支持一组版本号是有帮助的.
是否有合理标准化的功能测试集可以在编译时用于确定编译器是否支持特定的语言功能?
您可能无法比Boost.Config库做得更好.它定义了各种C++ 11和C++ 14特性的预处理器宏,这些特性在VC++等C++ 11/14-ish编译器上并不普遍支持.它就像你要达到标准一样接近.
IIRC,它与autoconf类似,通过预建(并在必要时执行)一堆简单的测试程序.我不认为你会得到任何完全在编译时运行的东西,只是因为在一个实现中存在关键字,而在另一个实现中存在语法错误.