这个程序有什么问题?
#include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; }
错误:
In file included from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0,from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48,from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/memory:64,from main.cpp:6: c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*,const _Tp&) [with _Tp = std::unique_ptr<int>,_Tp* = std::unique_ptr<int>*]': c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/stl_vector.h:745:6: instantiated from 'void std::vector<_Tp,_Alloc>::push_back(const value_type&) [with _Tp = std::unique_ptr<int>,_Alloc = std::allocator<std::unique_ptr<int> >,value_type = std::unique_ptr<int>]' main.cpp:16:21: instantiated from here c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h:207:7: error: deleted function 'std::unique_ptr<_Tp,_Tp_Deleter>::unique_ptr(const std::unique_ptr<_Tp,_Tp_Deleter>&) [with _Tp = int,_Tp_Deleter = std::default_delete<int>,std::unique_ptr<_Tp,_Tp_Deleter> = std::unique_ptr<int>]' c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/ext/new_allocator.h:105:9: error: used here In file included from c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/vector:69:0,from main.cpp:7: c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void std::vector<_Tp,_Alloc>::_M_insert_aux(std::vector<_Tp,_Alloc>::iterator,_Args&& ...) [with _Args = {const std::unique_ptr<int>&},_Tp = std::unique_ptr<int>,std::vector<_Tp,_Alloc>::iterator = __gnu_cxx::__normal_iterator<std::unique_ptr<int>*,std::vector<std::unique_ptr<int> > >,typename std::vector<_Tp,_Alloc>::_Base::_Tp_alloc_type::pointer = std::unique_ptr<int>*]': c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/stl_vector.h:749:4: instantiated from 'void std::vector<_Tp,_Tp_Deleter> = std::unique_ptr<int>]' c:mingwin../lib/gcc/mingw32/4.5.0/include/c++/bits/vector.tcc:314:4: error: used here