加深我的 C++ 知识,并找到解释右值参考的优秀文章http://blogs.msdn.com/b/vcblog/archive/2009/02/03/rvalue-references-c-0x-features-in-vc10-part -2.aspx(文章有些过时,发表于 2009 年)。
在文章中有几行应该出错
// original
string&& i = modifiable_lvalue; // Line 26
string&& j = const_lvalue; // Line 27 - ERROR
string&& k = modifiable_rvalue(); // Line 28
string&& l = const_rvalue(); // Line 29 - ERROR
但是,在 Visual Studio 2012 中string&& i = modifiable_lvalue; // Line 26 - ERROR
也会出错!!!
错误 C2440:“正在初始化”:无法从“std::string”转换为“std::string &&”
根据这篇文章
可修改的右值引用 Type&& 愿意绑定到可修改的左值和可修改的右值
这正是应该在第 26 行发生的。那么为什么我会收到错误消息?
谢谢 !
编辑:发现与此主题相关的非常有趣的文章:http://web.archive.org/web/20120529225102/http: //cpp-next.com/archive/2009/09/move-it-with-rvalue-references /#fn:插入排序。未来的读者可能会发现它很有帮助。