C++11 "auto" 关键字是否检索 "cv-qualifier" ?我有冲突样本

Does C++11 "auto" keyword retrieve "cv-qualifier" at all? I've got conflict samples

据说 "auto" 不检索 cv-qualifier,所以我做了一个实验:

const int i = 0;
auto r1 = i;
auto& r2 = i;
r1 = 3;//ok
r2= 3;//compilation error

好像在构造一个值的时候,cv-qualifier没有和new变量一起使用,而是和引用“&”一起使用,cv-qualifier是和它一起的。为什么会这样,自动检索 "cv-qualifier" 吗?

在大多数情况下,

auto 推导与模板推导相同。仅 auto 删除所有 cv-限定符,但 auto& 保留引用类型的 cv-限定符。如果 auto& 删除限定符,您将能够对 const 对象进行非 const 引用,这很糟糕!这与以下方法完全相同:

template <class T> deduce(T );
template <class T> deduce_ref(T& );

deduce(i);     // calls deduce<int>
deduce_ref(i); // calls deduce<int const>

因为 r2 是对 const int 的引用,您不能给它赋值。但是 r1 只是 i 的副本。