2013-08-29 22 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

相关问题