2013-08-29 21 views
0

我有一堂課。它有unique_ptr的成員。如何解決生成操作符=賦值和複製構造函數的VC++ 2012錯誤?

struct A 
{ 
    std::unique_ptr<int> m; 
}; 

和下面的語句應該工作

A a; 
A b; 
a = std::move(b); 
std::swap(a, b); 

然而,VC++ 2012在編譯的代碼中的錯誤。除了用R-Value參數手動生成你自己的拷貝構造函數和賦值運算符之外,是否有任何簡單的方法可以解決這個bug?自動生成(如通過宏)很好。

+1

不行。運氣不好。 – Yakk

+0

什麼是錯誤? – aaronman

+0

@aaronman:MSVC的所有版本都會嘗試複製'A'而不是移動它,然後生成一個神祕的編譯器錯誤,它不會告訴你它嘗試複製的位置。這是它的行動:http://rise4fun.com/Vcpp/Kd1F –

回答

2

不,除了宏,沒有其他簡單的方法繞過這個錯誤。

+0

我今天用完了upvotes,對不起:( –

+0

@MooingDuck我相信你的意思是downvotes,但沒關係。我明白了,LOL –

+1

宏可以提供什麼幫助?就像一個列舉成員和類型的variardic類,並且寫一個移動構造和賦值一樣嗎? – Yakk

相關問題