CV -自动变量的限定符

CV - qualifiers of an auto variable

本文关键字:变量 CV      更新时间:2023-10-16

我在这里发现了以下"规则":

[…自动删除const和volatile限定符,只有当它们位于最外层引用[…]

的顶部或正下方时

我理解顶级cv限定符是变量本身的描述(与它指向或引用的描述相比)。但是什么时候cv限定符"在最外层引用的正下方",为什么会自动删除它(可能第一个问题也回答了第二个问题)?

"cv在最外层引用的右边"意味着引用是一个cv限定的类型。例如,取这个函数:

const int& foo();

类型"最外层引用的正下方"是const int,这意味着const也在那里。在这个代码中:

auto i = foo();

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

const 而不是的例子如下:

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

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