是否有理由不使用最新的 C++ 标准?

Eli*_*lia 23 c++ standards c++14 c++20

我已经看到 IDE 中的默认标准通常不是最新发布的标准,甚至不是 IDE 中的最新标准。例如 JetBrains 的 Clion 有 C++20 和 C++17,但默认选项是 C++14。

是否有理由不使用最新发布的标准?

Jes*_*uhl 32

作为一般规则,如果可以,请使用最新的标准。

但是,出于某些原因,您可能会在某些情况下选择使用较旧的。

  • 您的代码使用了在较新的标准中改变行为或被彻底删除的功能。如果您没有时间更新代码,则为旧标准进行编译是合理的。

  • 您的工具链可能无法正确实施新标准。可能有已知的错误迫使您坚持使用较旧的错误。

  • 您需要在多个平台上支持多个编译器,但并非所有组合都支持新标准。

  • 您需要与旧编译器为旧标准构建的代码二进制兼容,并且您没有重新编译它的源代码。在这种情况下,您可能被迫使用相同的旧编译器和语言标准来确保 ABI 兼容性。

  • 公司内部政治可能出于任意原因强制要求特定版本。

  • 认证要求可能要求使用特定的编译器和语言版本。在高度管制的行业中经常发生,比如医疗。

  • 您的团队对新功能的熟悉程度可能较低,因此使用它们可能会增加出现错误的风险。

等等(顺便说一句,我在现实生活中看到了上述所有情况)。