在C++11标准后,auto从一个帮助编译器判断是否放在寄存器中的标志符,变成了用于自动推导变量类型的标志符.在初始化变量时,类型可以直接写作auto,由编译器从后面的赋值表达式,推导出实际的类型,免去输入复杂类型的麻烦.
而最近在使用的过程中,发现了一点奇怪的现象:

从上面的第一段代码,可以发现auto,auto所推导出的结果是相同的,而对于&,cv标识符则会正常地附着到最终的类型上.(文档中倒是说auto的推导,是按照模板推导那套理论进行的…不过也没特殊指出的情况….)
在第二段代码中,如果右侧的类型不是指针类型的话,auto会直接推导失败…也就是说也是参与推导过程的….?这样倒是说得通了,就像模板推导T&时推出的T不会是引用类型一样的.

第三段是发现的一个有趣的用法.使用decltype的情况,相当于使用decltype对赋值表达式进行推导,相对于普通的auto多出了对引用的感应.

PS1:auto标识符 模板类型推导 decltype

PS2:f7(eiki)喜欢!

PS3:虽然说讲的通还是好奇怪….