On 2019-07-06 14:58, Thiago Macieira wrote:
On Saturday, 6 July 2019 07:43:39 -03 Mutz, Marc via Development wrote:
So, if GCC is right, we have no way of adapting our API to not break in
C++20. So we need to decide what to break:

a) using 0 for nullptr, or
b) using u8"Hello" at all

When discussing with SG16 folks, the idea was that u8"Hello" would be an internal, indeterminate type and would cast to either const char8_t[] or const char[] depending on the context. In case of no context (i.e., templates, auto)
or of both choices being available, char8_t wins.

Is this not how it's implemented?

Apparently not.

Anyway, QByteArray has *Latin1* text-manipulation functions (toUpper and toLower), its split(char) function will happily split on indivdual bytes of an UTF-8 multibyte sequence, so adding char8_t overloads seems just wrong to me.

const char* in Qt is always assumed to be UTF-8-encoded. You need to use QLatin1String to have it interpreted as Latin-1:

https://doc.qt.io/qt-5/qstring.html#QString-8
https://doc.qt.io/qt-5/qstring.html#QString-7

What did you try to use QByteArray with that showed problems?

Just QByteArray(u8"Hello") already fails when compiled with -std=c++2a. And this is also why we need to fix it. The same compiles fine in C++17, and does the expected thing.

Thanks,
Marc
_______________________________________________
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development

Reply via email to