【问题标题】:How to detect if constexpr is supported at compile time如何在编译时检测是否支持 constexpr
【发布时间】:2015-08-26 06:58:56
【问题描述】:

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

对于我们的 windows 平台,我们使用目前不支持 'constexpr' 的 VS2013,我想知道除了检查我们是否在 Windows 中以及编译器的版本之外,是否有其他方法可以检查是否支持此功能低于 VS2015。

通过这种方式,我可以决定何时使用模板元编程(涉及使用 constexpr)使用编译时生成的成员来扩展现有类型,前提是该类型可用。

【问题讨论】:

    标签: c++ visual-studio-2013 constexpr


    【解决方案1】:

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

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

    对于 Boost,您需要的宏是 BOOST_NO_CXX11_CONSTEXPR

    【讨论】:

    • 太棒了,那个提升标志正是我想要的。谢谢。
    【解决方案2】:

    这是一个愚蠢的建议:尝试编译一个包含 constexpr 的小代码 sn-p 并检查是否有错误。

    【讨论】:

    • 我添加了最后一段,所以我解释了我的用例。感谢您的建议,但很遗憾我无法申请。
    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2014-02-28
    • 2019-02-04
    • 2021-12-23
    相关资源
    最近更新 更多