KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to use the C++0x unique_ptr class inside a map like so: // compile with `g++ main.cpp -std=gnu++0x` #include <string.h> #include <map> #include <memory> using namespace std; struct Foo { char *str; Foo(char const *str_): str(strdup(str_)) {} }; int main(void) { typedef std::map<int, unique_ptr<Foo>> Bar; Bar bar; auto a = bar.insert(Bar::value_type(1, new Foo("one"))); return 0; } However GCC gives me the following error (shortened, I think this is the relevant part, please test on your own C++ compiler): main.cpp:19: instantiated from here /usr/include/c++/4.4/bits/unique_ptr.h:214: error: deleted function ‘std::unique_ptr::unique_ptr(const std::unique_ptr&) [with _Tp = Foo, _Tp_Deleter = std::default_delete]’ /usr/include/c++/4.4/bits/stl_pair.h:68: error: used here I'm really not sure what I've done wrong, this works on MSVC. I have found very similar questions, that seem alike, however their solutions do not work for me. matt@stanley:/media/data/src/c++0x-test$ gcc --version gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Tags (comma-separated)
Save Edits
Cancel