为什么显式弃用了寄存器存储类

时间:2020-02-19 09:37:20

标签: c++ standards

在数值计算方面,在我看来,寄存器存储类(当前已弃用并从标准中删除)是进行优化的一个很好的提示。是否有明确的理由将其从标准中明确删除?

2 个答案:

答案 0 :(得分:6)

因为现在几乎没有用了。 register关键字不过是向编译器提示“您应该尝试让我快速访问此变量”。但是,编译器在评估此类情况方面比您强得多,尤其是在您实际上未对代码进行基准测试的情况下。

答案 1 :(得分:4)

来自Wikipedia

由于优化,

寄存器在现代编译器中基本没有意义,无论是否给出提示,都会在适当的情况下将变量放入寄存器中

编辑:

C++ Standard Defect reports

register关键字的作用很小,仅提供一个提示,说明通常会忽略该提示。在此版本的标准中应弃用该名称,从而将保留的名称释放出来以供将来的标准使用,就像这次auto由于类似的无用而被重新使用一样。