我发现here以下"规则":
[...]自动删除const和volatile限定符,只要它们位于最外层参考的顶部或右侧 [...]
我理解顶级cv限定符是变量本身的描述(与它指向或引用的描述相比)。但是什么时候是cv-qualifier"就在最外面的参考文献下面#34;为什么会自动放弃它(可能第一个问题也会回答第二个问题)?
答案 0 :(得分:2)
“ cv 在最外面的引用正下方”意味着引用是 cv - 限定类型。例如,使用此功能:
const int& foo();
“最外面的引用”正下方的类型为const int
,这意味着const
也在那里。在这段代码中:
auto i = foo();
i
的类型为int
,而不是const int
或const int&
。
最外层引用下面不的const
示例包括:
const char* bar();
const double* volatile & baz();
使用auto
来调用这些函数会导致分别输入const char*
和const double*
。