¿Cuáles son las compensaciones entre boost :: locale y std :: locale?

Estoy en el proceso de internacionalizar una gran base de código heredada en C ++, y me enfrento a una decisión difícil: ¿debo usar boost :: locale's o std c ++ locales?

Estoy comprometido a usar utf-8. Tenemos que hacer un rango razonablemente amplio de procesamiento de texto, aunque no es el núcleo de lo que hace nuestro código, es importante. Podemos esperar hacer la mayor parte de lo que uno podría necesitar hacer: formato de hora, fecha, número y dinero, colación, expresión regular, aislamiento de subcadenas, interacción con boost :: sistema de archivos, acceso a base de datos, etc.

losintroducción a boost :: locale Lo entiendo

Establecer la configuración regional global tiene efectos secundarios (ejemplo csv). Afecta a printf y boolst lexical_cast. Algunas bibliotecas de terceros pueden romperse.El formato de número está roto en algunas configuraciones regionales.Los nombres locales no están estandarizados.Muchos proveedores solo proporcionan C y POSIX, por lo que GCC admite la localización solo en Linux.

Tengo problemas para evaluar el impacto del punto 1. Supongo que el punto 2 es bastante grave si nos afecta, los anuncios 3 y 4 no serán un gran problema para nosotros.

¿Existe consenso en la comunidad de que Boost :: locale es la mejor alternativa? ¿Hay alguna moción en la comunidad estándar para abordar los problemas con std :: locale? ¿Alguien puede ayudarme a tomar una decisión más informada?

Quizás lo más importante, ¿es simple migrar de uno a otro? ¿Qué tan bien juegan los dos? ¿Es legítimo establecer la configuración regional global con una configuración regional de impulso y luego usar las instalaciones estándar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta