繁体   English   中英

如何在编译时检测constexpr是否受支持

[英]How to detect if constexpr is supported at compile time

我目前在一个针对多个平台的项目中工作,我们的代码库是使用几种不同的编译器(gcc / clang / vc ++)构建的。

对于我们的Windows平台,我们使用VS2013(目前不支持“ constexpr”),我想知道是否有一种方法可以检查是否支持此功能,而不仅仅是检查我们是否在Windows中并且编译器的版本低于VS2015 。

这样,我可以决定何时使用模板元编程(涉及constexpr的使用)来扩展使用编译时生成的成员扩展存在的类型(仅在可用时)。

这里有两个建议。 Boost.Config和这个名为“ cxx11tests”的Python程序(github.com/sloede/cxx11tests)。 运行它很简单:

CXX=g++ CXXFLAGS=-std=c++11 ./configure.py
make

对于Boost,想要的宏是BOOST_NO_CXX11_CONSTEXPR

这是一个愚蠢的建议:只需尝试编译一个包含constexpr的小代码片段,然后检查是否有错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM