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&nbsp;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