error C2662 无法将左值绑定到右值 —— 变量永远是左值,即使它的类型为右值引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error C2662 无法将左值绑定到右值 —— 变量永远是左值,即使它的类型为右值引用相关的知识,希望对你有一定的参考价值。

 1 #include <utility>
 2 
 3 struct A
 4 {
 5     void f() && { }
 6 };
 7 
 8 void g(A &&a)
 9 {
10     a.f();        //error, a是左值
11     std::move(a).f();        //fine
12 }
13 
14 int main() { return 0; }

其实有了右值表示临时对象这一观察结果,变量是左值这一特性并不令人惊讶。毕竟,变量是持久的,直到离开作用域时才被销毁。(《C++ Primer》)

 

 

以上是关于error C2662 无法将左值绑定到右值 —— 变量永远是左值,即使它的类型为右值引用的主要内容,如果未能解决你的问题,请参考以下文章

std::forward vs std::move 同时将左值绑定到右值引用

左值绑定到右值引用

左值绑定到右值引用

在 C++ 11 中将非 const 左值引用绑定到右值是不是有效?(修改)

C++11 move()函数:将左值强制转换为右值

通用引用的语法