更新c ++时,行为的静默变化是什么?

时间:2018-04-21 19:31:36

标签: c++ c++14 major-upgrade

考虑一下我想要更新到C ++ 14的C ++ 98代码库。

我真的想要进行此升级,因为它会使代码库受益,问题是此类更新的负担。

问题是此代码库没有全面的测试套件。因此,在更新之后,一些在编译时不会被捕获的行为更改可能会被忽视。

现在,我知道标准委员会很少引入重大变革,特别是沉默变革,但有些变化是不可避免的。

为了升级语言版本的风险分析和时间表,我需要了解以下内容:

  1. 是否有全面(或部分)此类更改的列表?

  2. 是否有一个自动化工具可以指向我的代码库中的潜在静默破坏实例(手动修复)?

1 个答案:

答案 0 :(得分:1)

C ++标准本身就有这样一个列表。我认为它并不完全全面(特别是如果你做的事情经常在实践中起作用但标准不允许,例如extending the std namespace in unsupported ways

如果你看一下Appendix C of the C++14 standard,你会发现它列出了C ++ 17和旧版C ++之间的差异,这些差异可以追溯到C ++ 03。 C.1部分与您的目的无关,因为它与C进行比较,但C.2C.3可能会有所帮助。

如果你想转换成另一个标准(C ++ 17目前是最新发布的版本,我强烈建议你移植到那个版本),你可以找到可浏览HTML的链接表格here。请注意,这些都不是官方标准,但它们非常接近;唯一的区别是在一个方向或另一个方向上的小编辑修复。

我不知道有任何自动化工具可以帮助迁移,但如果存在,我也不会感到惊讶。