【发布时间】:2013-08-28 19:30:10
【问题描述】:
加深了我的 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: 'initializing' : 无法从 '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:insertionsort。未来的读者可能会发现它很有帮助。
【问题讨论】:
-
@nosid:不,问题中的代码是文章中代码的逐字复制。