无法将纯文本引用绑定到文字?

时间:2017-09-28 05:58:35

标签: c++

示例:

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”?

1 个答案:

答案 0 :(得分:1)

当输入为非常量时,

auto从不推断const。由于42的类型为int,因此auto推导为int,您的代码相当于:

int& h = 42;

这是一个错误,因为非const左值引用无法绑定到prvalue。