0
根據cppreference.com,下面的代碼應該可以編譯和工作。它應該構建一個unique_ptr
,其中存儲的指針用ap.release()
進行初始化,並且存儲的刪除器將進行值初始化。std :: unique_ptr std :: auto_ptr的轉換構造函數
#include <memory>
int main()
{
std::auto_ptr<int> ap(new int());
std::unique_ptr<int> up(std::move(ap));
}
當我編譯它(使用VS2013與VS2010工具集),我收到以下錯誤:
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
這是編譯器Visual Studio 2010的工具集的錯誤嗎?
[Works with GCC。](http://ideone.com/LWj8P9) –
似乎是一個錯誤。我在VC 2010中遇到了同樣的錯誤,但它與VC 2012一起工作良好。 – ComicSansMS
@ComicSansMS:如果您的評論是答案,我會接受它作爲此問題的接受答案。 – dalle