考虑以下代码:
int main()
{
int i{};
auto& c = static_cast<const int&&>(i); // (1)
auto& v = static_cast<volatile int&&>(i); // (2)
}
虽然
(1)
编译成功,但不接受 (2)
:为什么
auto
不能成为 volatile int
?为什么
auto&
可以变成 const int
并绑定(bind)到 const int&&
?是因为 auto&
实际上绑定(bind)到在赋值右侧创建的临时对象吗?但是,为什么 auto& p = 1;
不起作用? 最佳答案
这不是关于 auto
,而是关于将临时变量绑定(bind)到非常量引用。
在第一种情况下,您会得到一个 const int&
,这没问题。我是第二种情况,volatile int&
不会绑定(bind)到临时的。
关于c++ - 为什么 `auto&` 不能绑定(bind)到可变的右值表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33066346/