我有一个当前针对 gcc 7.2 的 c++14 项目,并且我希望从针对 c++17 的项目向后移植代码。该项目广泛使用了if constexpr
。 gcc 7.2 支持带有 --std=c++1z 标志的 if constexpr
,但它带来了所有其他(当时)实验性 C++17 功能。
有没有办法在 gcc 7.2 中仅启用特定的语言功能,在本例中是 if constexpr
?
请您参考如下方法:
不,这是不可能的。要么全有,要么全无。
g++ 中对语言方言的控制程度有限 https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html
如果使用这些方言,可能会引发警告,您可以将此警告转换为错误。
另一种方法可能是为 clang-tidy 或 clang-query 创建插件来检查您的 C++ 代码库不使用任何您不想要的构造,但要实现预期目的,它会成为一项相当大的工作。