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》)

 

 

posted @ 2016-03-04 21:54  Qzki  阅读(725)  评论(0编辑  收藏  举报