Windows Unicode C ++ Stream Error de salida

Actualmente estoy escribiendo una aplicación que requiere que llame a GetWindowText en ventanas arbitrarias y almacene esos datos en un archivo para su posterior procesamiento. En pocas palabras, noté que mi herramienta estaba fallando en Battlefield 3, y reduje el problema al siguiente personaje en el título de su ventana:http: //www.fileformat.info/info/unicode/char/2122/index.ht

Así que creé una pequeña aplicación de prueba que solo hace lo siguiente:

std::wcout << L"\u2122";

Bajo y he aquí que rompe la salida a la ventana de la consola para el resto del programa.

¿Por qué el STL de MSVC se ahoga con este personaje (y supongo que otros) cuando las API como MessageBoxW, etc. lo muestran bien?

¿Cómo puedo imprimir esos caracteres en mi archivo?

Probado en VC10 y VC11 en Windows 7 x64.

o siento por la publicación mal construida, me estoy rompiendo el pelo aquí.

Gracias

EDITAR

Caso de prueba mínimo

#include <fstream>
#include <iostream>

int main()
{
  {
    std::wofstream test_file("test.txt");
    test_file << L"\u2122";
  }

  std::wcout << L"\u2122";
}

Resultado esperado: carácter '™' impreso en la consola y el archivo. Resultado observado: el archivo se crea pero está vacío. No hay salida a la consola.

He confirmado que la fuente que estoy usando para mi consola es capaz de mostrar el carácter en cuestión, y el archivo está definitivamente vacío (0 bytes de tamaño).

EDITAR

La depuración adicional muestra que el 'failbit' y el 'badbit' están establecidos en las secuencias.

EDITAR

También intenté usar Boost.Locale y tengo el mismo problema, incluso con la nueva configuración regional imbuida global y explícitamente en todas las transmisiones estándar.

Respuestas a la pregunta(8)

Su respuesta a la pregunta