我有短碼如下面矢量<unique_ptr>給出麻煩
#include <memory>
#include <vector>
#include <tuple>
using namespace std;
struct A
{
A() {}
vector<unique_ptr<int>> m;
// Change the above line to "unique_ptr<int> m;" removes the compilation error
// Or add a line "A(A const&) = delete;" removes the compilation error also
};
struct B
{
tuple<A> t;
};
int main()
{
A a;
B b;
return 0;
}
VC2013 NOV CTP編譯器爲錯誤:
錯誤1個錯誤C2280:「的std ::的unique_ptr> ::的unique_ptr(常量的std ::的unique_ptr < _Ty,性病:: default_delete < _Ty >> &)」:試圖引用刪除的功能xmemory0 593
這是一個編譯器錯誤或代碼錯誤?
[在此使用g ++](http://coliru.stacked-crooked.com/a/4427e08c08e83a19) –
因此,這是一個編譯器錯誤。謝謝。 – user1899020
爲什麼要刪除複製構造函數?如果你不想讓它被使用,你能不能把它變成「私人」?而這個錯誤是因爲你正在做的事情是觸發複製構造函數。在C++中,我還沒有足夠的經文來告訴你這是什麼。 – Dan