C++ 11 tiene dos nuevos tipos de datos integrales de caracteres, char16_t
y char32_t
. Me gustaría emularlos para los compiladores que no tienen un tipo diferenciado para sobrecargar las operaciones de E/S y verlos como caracteres en lugar de su valor entero.emulando por completo los distintos tipos integrados (específicamente: char16_t y char32_t)
Estos son los requisitos:
- Distinct (sin
typedef
). - exacta de ancho en los sistemas normales (uint16_t ala y uint32_t)
- otros C++ 11 características se permite (ver más abajo primer intento)
- debe jugar agradable con literales;
char16_t c16 = u"blabla unicode text blabla";
debe funcionar. - si char16_t se puede usar en operadores matemáticos, obviamente esto también necesita funcionar.
Mi primer intento, que falla en el departamento literal era una enumeración inflexible:
enum char16_t : uint16_t;
Esto tiene otras desventajas también, que tal vez podría ser resuelto mediante el suministro de los operadores necesarios mí mismo (que es realmente bien por mi).
No está muy claro por qué está intentando hacer esto o qué herramientas le gustaría usar. El "primer intento" usa C++ 11. No hay forma de obtener literales Unicode de un compilador sin soporte garantizado de Unicode, y no hay forma de manipular cadenas en tiempo de compilación sin un compilador reciente de C++ 11, punto. – Potatoswatter