g++ 6.3 启用宽松的 constexpr

g++ 6.3 enable relaxed constexpr

我正在使用 gcc 6.3.0(特别是 MinGW,尽管我也想支持 linux)。我的代码具有有效的 constexpr 函数。我使用的一个库在函数声明中使用了一个具有 constexpr 潜力的宏,它仅在 __has_feature(cxx_relaxed_constexpr) 时被定义为 constexpr。虽然我知道有问题的库函数可以与定义的宏一起正常工作,但它没有定义为 constexpr 因为显然 mingw g++(可能还有真正的 g++)默认情况下没有启用该功能。我想让 g++ 启用该标志,希望通过 makefile 中的 cli 标志,这样我就不必修改库头文件了。

constexpr if and/or if constexpr 可以的话也不错

我能找到的最相关的 SO post 是 this one,但未得到答复。

你需要一台更好的时光机。

  • GCC 6.3 released on 2016 年 12 月 21 日。
  • C++17 标准直到 2017 年底才发布。

这个 pageconstexpr if 在 gcc 7 中首次可用。