On Friday, 18 January 2019 08:13:40 PST Kai Koehne wrote: > 1. We generally compile Qt code with QT_NO_CAST_FROM_ASCII that disables the > QString(const char *) overload. And we do that so that you have to make it > explicit whether you really want to do the implicit conversion from UTF-8 > to UTF-16, use QStringLiteral() to encode it as UTF-16 at compile time, or > rather have it translated with a tr() call. > > I think for Qt code explicit is better than implicit, so I actually would > stay with QT_NO_CAST_FROM_ASCII.
Actually, what we should do is allow everywhere functionTakingString(u"Tor Arne Vestbø") // (note the u) Which causes the compiler to encode the string in UTF-16, bypassing the need for runtime decoding, and enforcing sources as UTF-8, so we get consistent binaries. It's just one step short of QStringLiteral in that it will still allocate memory, but it only needs a memcpy. Such code also works with functions taking QStringView without memory allocation. We all know that QStringLiteral has drawbacks when it comes to unloading modules. For QtCore, obviously QStringLiteral is not a problem, but other modules may decide to avoid it. PS: I still want to improve QStringLiteral, but it will still be different from a pure char16_t literal. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development