Is std :: ofstream movable?

Tengo este mapa que se compila bien en MSVC10:

std::map<std::string, std::ofstream> m_logFiles;

Pero en ubuntu usando g ++ 4.5 con C ++ 0x habilitado, recibo el siguiente mensaje de error:

/ usr / include / c ++ / 4.5 / bits / ios_base.h | 785 | error: ‘std :: ios_base :: ios_base (const std :: ios_base &)’ es privado

Mediante el uso de punteros en lugar de objetos, resolví el problema.
Buscando en la web, aprendí que las transmisiones no están destinadas a ser copiadas (el por qué estaba bien explicado). Pero mi pregunta es, ¿es std :: ofstream un tipo móvil? Si es así, ¿no debería permitir su uso como parámetro de plantilla en los contenedores estándar?
Si es así, ¿está g ++ detrás de MSVC10 en este punto? (lo que explicaría por qué funciona en MSVC). Sé que sería una tontería pedirles a los escritores de compiladores que implementen completamente algo que ni siquiera es definitivo, pero tengo curiosidad sobre el futuro.

Usar g ++ 4.6.1 no ayudó.

Edit: leyendo los comentarios, busqué un poco más y descubrí que el inserto está causando el problema, no la declaración del mapa.

Leyendo el enlace de Cubbi Intenté lo siguiente:

#include <string>
#include <fstream>
#include <map>

using namespace std;

int main()
{
    map<string, ofstream> m_logFiles;
    ofstream st;
    m_logFiles.insert(make_pair<string, ofstream>(string("a"), move(st)));
    return 0;
}

Pero todavía no hay suerte. g ++ se queja sobre el uso del constructor de copias borradas b.

Respuestas a la pregunta(2)

Su respuesta a la pregunta