我的理解是auto是decltype的语法糖
int *p=new int(1);
const auto &q=p; // int * const q=p
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你这个例子不太合适,我的理解是,q这个时候是个const int*&。
更合适和常见的例子是
std::vector<A> a_vec;
for( const auto& elem : a_vec )
{
xxxx
}
在这个例子里,如果用const auto elem : a_vec,编译器会把auto解释为cosnt A,所以每个elem是一个copy,而如果显示用了const auto& elem,等于告诉编译器,你这儿每个elem是一个reference。 因为&&会引发decay,所以除非你的auto类型在函数的input里,然后在代码里,又有明显的地方表示除非auto&&是个rvalue,不然编译不过,不然编译器不会认为auto&&是个rvalue.
理解不对的地方请版上各位指正。
【 在 lushan5436 的大作中提到: 】
: o,
: 这个auto,我很多地方容易费解。正常这个&&只能用于 右值,但auto&&却用于了左值
: 还有类似的
: ...................
--
FROM 122.224.174.*