C++ 无法将普通引用绑定到文本?
例如:C++ 无法将普通引用绑定到文本?,c++,C++,例如: auto &h = 42; // error:we can't bind a plain reference to a literal. const auto &j = 42; // right 我不明白为什么编译器不能知道&h是'const int'& 我的意思是,“自动”有两个步骤:1.知道什么类型的右值。 2.确保左值成为类型 如果这一步是正确的,为什么我们必须在右值为文本时添加“const”?auto当输入为非常量时,决不会推导出const。由于
auto &h = 42; // error:we can't bind a plain reference to a literal.
const auto &j = 42; // right
我不明白为什么编译器不能知道&h
是'const int'&
我的意思是,“自动”有两个步骤:1.知道什么类型的右值。
2.确保左值成为类型
如果这一步是正确的,为什么我们必须在右值为文本时添加“const”?
auto
当输入为非常量时,决不会推导出const
。由于42
具有类型int
,因此auto
推断为int
,您的代码相当于:
int& h = 42;
这是一个错误,因为非常量左值引用无法绑定到prvalue。可能的重复项您应该知道它不是
const int&
,编译器不会混淆。这是一个int
纯右值。一个const引用绑定到它的事实并不意味着它是一个const引用类型。@ StytTeLeLee你应该知道很多声音,就像C++一样,它确实是一个专家友好的语言。D@skypjack-我们必须接受它的本来面目,并热爱它:PDo你有问题吗?