CV - 自动变量的限定符

CV - qualifiers of an auto variable

我发现 here 以下 "rule":

[...] auto drops const and volatile qualifiers only if they're at the top or right below an outermost reference [...]

我知道顶级 cv 限定符是对变量本身的描述(与它所指向或引用的内容的描述相比)。但是什么时候是 cv-qualifier "right below an outermost reference" 以及为什么会自动删除它(可能第一个问题也回答了第二个问题)?

"cv 就在最外层引用的下方" 表示引用是对 cv 限定的类型。例如,取这个函数:

const int& foo();

类型 "right below the outermost reference" 是 const int,这意味着 const 也在那里。在这段代码中:

auto i = foo();

i 的类型是 int,不是 const intconst int&

const不是最外层引用正下方的例子是:

const char* bar();
const double* volatile & baz();

使用 auto 调用这些函数将分别推断为类型 const char*const double*