2013-12-19 125 views
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的工具集的錯誤嗎?

+0

[Works with GCC。](http://ideone.com/LWj8P9) –

+1

似乎是一個錯誤。我在VC 2010中遇到了同樣的錯誤,但它與VC 2012一起工作良好。 – ComicSansMS

+0

@ComicSansMS:如果您的評論是答案,我會接受它作爲此問題的接受答案。 – dalle

回答

2

似乎是一個錯誤。

我得到同樣的錯誤,你在2010年VC,但它正常工作與VC 2012

我不是在跟蹤標準的變化也不錯,但似乎這個功能只添加到與N3073標準(請參閱該頁面上的更改10.),這會延遲VC 2010的發佈時間。

相關問題