C ++ unique_ptr y mapa
Estoy tratando de usar elC ++ 0x unique_ptr
clase dentro de unamap
al igual que:
// 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;
}
Sin embargo, GCC me da el siguiente error (acortado, creo que esta es la parte relevante, por favor pruebe en su propio compilador de C ++):
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
Realmente no estoy seguro de lo que he hecho mal, esto funciona en MSVC. He encontrado muysimilar preguntas, que parecen iguales, sin embargo, sus soluciones no funcionan para mí.
matt@stanley:/media/data/src/c++0x-test$ gcc --version gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3