4

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

auto int foo2 = 8;

它在 C++03 下编译,在 C++11 下不编译。是否有任何理由不与 C++03 向后兼容?没有使用这个关键词的标准委员会意见的来源是什么?有关键字使用的统计数据吗?

顺便说一句,我用 gcc 测试过——也许这是一个编译器错误?

4

2 回答 2

17

众所周知,这会破坏兼容性,并在标准的附录 C 2.3 第 7 条中有所提及。考虑到汽车的无用性以及修复成本真的很容易,人们认为这是可以接受的。

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

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

于 2012-08-23T14:18:46.420 回答
12

这已从 C++11 中删除,因为它们有一个新的用途 for auto,并且允许auto auto foo2 = 8;工作会令人困惑。删除这个古老而毫无意义的声明不会失去任何意义。

于 2012-08-23T14:19:53.353 回答