根据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工具集的编译器中的错误吗?
答案 0 :(得分:2)
似乎是一个错误。
我在VC 2010中遇到了与你相同的错误,但它在VC 2012中运行良好。
我不太擅长跟踪标准更改,但似乎此功能仅添加到N3073的标准中(请参阅该页面上的更改10.
),该版本标准化了VC 2010的发布日期