![](/img/trans.png)
[英]How to static_assert if a constexpr number is in a constexpr array at compile time?
[英]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.