C ++ unique_ptr e mapa
Estou tentando usar oC ++ 0x unique_ptr
classe dentro de ummap
igual a:
// 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;
}
No entanto, o GCC me fornece o seguinte erro (abreviado, acho que essa é a parte relevante, por favor, teste em seu próprio compilador 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
Eu realmente não tenho certeza do que fiz de errado, isso funciona no MSVC. Eu achei muitosemelhante perguntas que parecem semelhantes, no entanto, suas soluções não funcionam para mim.
matt@stanley:/media/data/src/c++0x-test$ gcc --version gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3