1 #include2 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(); //fine12 }13 14 int main() { return 0; }
其实有了右值表示临时对象这一观察结果,变量是左值这一特性并不令人惊讶。毕竟,变量是持久的,直到离开作用域时才被销毁。(《C++ Primer》)
本文共 322 字,大约阅读时间需要 1 分钟。
1 #include2 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(); //fine12 }13 14 int main() { return 0; }
其实有了右值表示临时对象这一观察结果,变量是左值这一特性并不令人惊讶。毕竟,变量是持久的,直到离开作用域时才被销毁。(《C++ Primer》)
转载于:https://www.cnblogs.com/qzki/p/5243581.html