c++ - 如何在编译时检测是否支持constexpr

标签 c++ visual-studio-2013 constexpr

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

对于我们的 windows 平台,我们使用 VS2013,目前不支持 'constexpr',我想知道除了检查我们是否在 Windows 中以及编译器的版本是低于 VS2015。

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

最佳答案

这里有两个建议。 Boost.Config这个 python 程序称为“cxx11tests”(github.com/sloede/cxx11tests)。运行它非常简单:

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

对于 Boost,您需要的宏是 BOOST_NO_CXX11_CONSTEXPR

关于c++ - 如何在编译时检测是否支持constexpr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32219908/

相关文章:

c++ - switch case 语句中包含成员变量 in case

git - 如何在 Linux 上启用 TEE eclipse 插件以在 TFS 2013 中克隆 git 存储库?

c++ - 接口(interface)(抽象类)设计的最佳方法?

c++ - 限制函数在代码库中的使用次数

c++ - 当我声明一个引用变量时堆栈会发生什么? C++

visual-studio-2013 - Imagination PowerVR SDK 示例无法在 Visual Studio 2013 上执行

c# - 在 Visual Studio 2013 中无法将 ASP Web 应用程序迁移到 Azure Web 角色 - 'Add Windows Azure Deployment Project' 选项在哪里?

c++ - 生成 boost::hana::set 的常量表达式问题

c++ - 让 constexpr 在 OSX 上的 C++17 中与 pow 一起使用

c++ - ffmpeg/libx264 C API : frames dropped from end of short MP4