为什么auto的旧用法(c ++ 03)不能在C++ 11下编译?

Pio*_*ycz 4 c++ auto c++11 c++03

我知道auto之前有一些用法,因为它是变量的默认值(与静态相反) - 请参阅问题 考虑有效的C++ 03代码,其中可能为了不言自明,使用了这个关键字:

auto int foo2 = 8;
Run Code Online (Sandbox Code Playgroud)

它在C++ 03下编译,不能在C++ 11下编译.有没有理由不与C++ 03反向兼容?标准委员会意见的来源是什么,没有使用此关键字?是否有关键字使用情况的统计数据?

BTW我用gcc测试过 - 也许这是一个编译器错误?

pmr*_*pmr 17

众所周知,这会破坏兼容性,并在标准的附录C 2.3第7条中提及.鉴于汽车一直没用,并且确实很容易修复成本被认为是可以接受的.

至于关键字统计:一些拥有巨大代码库的公司在委员会中,他们可能知道它是否可以接受,但我无法挖掘任何完整的统计数据.

我做了一些标准考古学和谈论的最古老的论文auto似乎是N1478,它指的是第一次讨论auto的反射器信息(所有后来的论文都没有讨论破坏兼容性或推理).


Nic*_*las 12

这是从C++ 11中删除的,因为它们有一个新用途auto,并且允许auto auto foo2 = 8;工作会让人感到困惑.通过删除这个古老而毫无意义的宣言,没有任何重要意义.

  • @PiotrNycz如果他们经常这样做,我会很高兴的. (6认同)