【发布时间】:2014-08-10 20:12:32
【问题描述】:
在 Visual Studio 2010 中实现的右值引用与在 C++11 中指定的右值引用有什么区别?在 Visual Studio 2010 中使用重值引用时是否有任何需要注意的特殊缺陷,如果由符合 C++11 的编译器编译,可能会使源代码无效或工作方式不同?
【问题讨论】:
标签: c++ visual-studio-2010 rvalue-reference
在 Visual Studio 2010 中实现的右值引用与在 C++11 中指定的右值引用有什么区别?在 Visual Studio 2010 中使用重值引用时是否有任何需要注意的特殊缺陷,如果由符合 C++11 的编译器编译,可能会使源代码无效或工作方式不同?
【问题讨论】:
标签: c++ visual-studio-2010 rvalue-reference
根据this table,VS2010 支持右值引用 2.0 版本(当前版本是 2.1 IIRC)。
2.0 和 2.1 的重要区别在于后者允许隐式转换:
std::string&& x = "hello"; // legal in 2.1, illegal in 2.0
还要注意 VS2010 还不支持重载 *this 的右值。
void Foo::foo() && { ... } // not yet supported in VS2010
【讨论】:
从 42:30 分钟 起,在 Channel 9 上查看 Stephan T. Lavavej 的视频讲座的第 9 期。他解释了 Visual Studio 中右值引用和移动语义的时间线和演变。
这里是:C9 Lectures: Stephan T. Lavavej - Standard Template Library (STL), 9 of n
【讨论】: