aCu*_*ria 2 c++ unique-ptr visual-studio-2012
以下代码将发出警告:
警告C4239:使用非标准扩展名:'argument':从'std :: unique_ptr <_Ty>'转换为'std :: unique_ptr <_Ty>&'
std::unique_ptr<T> foo() { return std::unique_ptr<T>( new T ); }
std::unique_ptr<T> myVar;
myVar.swap(foo());
Run Code Online (Sandbox Code Playgroud)
我想知道处理这种情况的正确方法是什么.
所述swap的成员函数std::unique_ptr需要一个非const左值和参考的表达foo()是一个rvalue作为foo是返回一个对象(相对于基准)的功能.您不能将rvalue绑定到非const左值引用.
请注意,您可以反过来进行交换:
foo().swap(myVar);
Run Code Online (Sandbox Code Playgroud)
更简单的事情是直接初始化:
std::unique_ptr<T> myVar(foo());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2705 次 |
| 最近记录: |