繁体   English   中英

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

[英]Why old usage (c++03) of auto does not compile under C++11?

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

auto int foo2 = 8;

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM