![](/img/trans.png)
[英]Why the following code compiles with `c++03` but not with `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.