Skip to main content
 首页 » 编程设计

c++之是否可以在 gcc 中仅启用特定的 C++ 语言功能

2024年05月22日33freeliver54

我有一个当前针对 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++ 代码库不使用任何您不想要的构造,但要实现预期目的,它会成为一项相当大的工作。