示例:
auto &h = 42; // error:we can't bind a plain reference to a literal.
const auto &j = 42; // right
我不明白为什么编译器不能知道&h
是`const int&
我的意思是,“auto”有两步:1。知道什么类型的rvalue。
2.确保左值成为类型
如果步骤正确,为什么我们必须在rvalue为文字时添加“const”?
答案 0 :(得分:1)
auto
从不推断const
。由于42
的类型为int
,因此auto
推导为int
,您的代码相当于:
int& h = 42;
这是一个错误,因为非const左值引用无法绑定到prvalue。