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

questionAnswers(4)

yourAnswerToTheQuestion