来自std :: auto_ptr的std :: unique_ptr转换构造函数

时间:2013-12-19 09:26:38

标签: c++11 visual-studio-2013

根据cppreference.com,以下代码应该编译并运行。它应该构造一个unique_ptr,其中存储的指针用ap.release()初始化,并且存储的删除器是值初始化的。

#include <memory>
int main()
{
   std::auto_ptr<int> ap(new int());
   std::unique_ptr<int> up(std::move(ap));
}

当我编译它时(使用带有VS2010工具集的VS2013)我收到以下错误:

test.cpp(5): error C2664: 'std::unique_ptr<_Ty>::unique_ptr(std::nullptr_t)' :
   cannot convert parameter 1 from 'std::auto_ptr<_Ty>' to 'std::nullptr_t'
   with
   [
      _Ty=int
   ]
   nullptr can only be converted to pointer or handle types

这是VS2010工具集的编译器中的错误吗?

1 个答案:

答案 0 :(得分:2)

似乎是一个错误。

我在VC 2010中遇到了与你相同的错误,但它在VC 2012中运行良好。

我不太擅长跟踪标准更改,但似乎此功能仅添加到N3073的标准中(请参阅该页面上的更改10.),该版本标准化了VC 2010的发布日期