Estoy construyendo una API que me permite buscar cadenas en varias codificaciones, incluidas utf8, utf16, utf32 y wchar_t (que pueden ser utf32 o utf16 según el SO).Nuevos caracteres Unicode en C++ 0x
nuevo estándar de C++ había introducido nuevos tipos
char16_t
ychar32_t
que no tienen esta ambigüedad sizeof y deben ser utilizados en el futuro, por lo que me gustaría apoyarlos así, pero la pregunta es, habría que interfieren con normaluint16_t
,uint32_t
,wchar_t
tipos que no permiten la sobrecarga porque pueden referirse al mismo tipo?class some_class { public: void set(std::string); // utf8 string void set(std::wstring); // wchar string utf16 or utf32 according // to sizeof(wchar_t) void set(std::basic_string<uint16_t>) // wchar independent utf16 string void set(std::basic_string<uint32_t>); // wchar independent utf32 string #ifdef HAVE_NEW_UNICODE_CHARRECTERS void set(std::basic_string<char16_t>) // new standard utf16 string void set(std::basic_string<char32_t>); // new standard utf32 string #endif };
Así que sólo puedo escribir:
foo.set(U"Some utf32 String"); foo.set(u"Some utf16 string");
¿Cuáles son los typedef de
std::basic_string<char16_t>
ystd::basic_string<char32_t>
ya que existe hoy en día:typedef basic_string<wchar_t> wstring.
No puedo encontrar ninguna referencia.
Editar: de acuerdo a las cabeceras de gcc-4.4, que introdujeron estos nuevos tipos:
typedef basic_string<char16_t> u16string; typedef basic_string<char32_t> u32string;
Sólo quiero para asegurarse de que esto es requisito estándar real y no gcc-ismo.
Pareces haber revertido involuntariamente mi trivial s/interferir/interferir/ortografía corr ección. – ephemient
Gracias, fusionó su solución de nuevo. – Artyom