我对类似
X&& x = static_cast<X&&>(obj_x);
的语句的理解是,尽管外表上看起来不同,但实际上x
最终仍然是一个普通的左值引用。我最近阅读了Scott Meyers写的这篇文章,他坚称x
会成为一个右值引用类型的左值。这个区别真的有意义吗?还是说只是纯粹的区分而已?具体来说,无论给定哪种情况。X&& x = static_cast<X&&>(obj_x)
或者
X& x = obj_x;
这两个定义的 x
会有任何后续代码表现不同的情况吗?
decltype(x)
。如果x
是一个非静态数据成员,它还会影响拷贝构造函数的生成。 - cpplearner