我知道它auto
之前有一点用法,因为它是变量的默认值(与静态相反) - 请参阅问题
考虑有效的 C++03 代码,其中可能为了不言自明,使用了这个关键字:
auto int foo2 = 8;
它在 C++03 下编译,在 C++11 下不编译。是否有任何理由不与 C++03 向后兼容?没有使用这个关键词的标准委员会意见的来源是什么?有关键字使用的统计数据吗?
顺便说一句,我用 gcc 测试过——也许这是一个编译器错误?
众所周知,这会破坏兼容性,并在标准的附录 C 2.3 第 7 条中有所提及。考虑到汽车的无用性以及修复成本真的很容易,人们认为这是可以接受的。
至于关键字统计:一些拥有庞大代码库的公司在委员会中,他们可能知道这是否可以接受,但我无法挖掘任何完整的统计数据。
我做了一些标准考古,谈论的最古老的论文auto
似乎是 N1478,它指的是第一次讨论汽车的反射器消息(所有后来的论文都没有谈论破坏兼容性或推理)。
这已从 C++11 中删除,因为它们有一个新的用途 for auto
,并且允许auto auto foo2 = 8;
工作会令人困惑。删除这个古老而毫无意义的声明不会失去任何意义。