On 2019-08-12 22:13, Thiago Macieira wrote:
On Monday, 12 August 2019 13:03:47 PDT Mutz, Marc via Development wrote:
The milestone is std::byte, which which we could put QByteArray on a
sound basis. And char8_t, which would make QUtf8String(View) fly.

QByteArray, due to its dual string / byte array nature, will continue to
operate on char.

It was a mistake to merge QCString and QByteArray back then. This design doesn't work. Python 2 realized it, and we realized it too (toLower() interprets as L1, but const char*, and thus, by extension, QByteArray, is expected to be utf-8-encoded in Qt source). We had them separate before, we can separate them again.

After all, char *is* a byte.

No, a char is a character. std::byte is a byte.

We should add the unsigned char
variants too, though.

Ack.

I'm not saying it's easy to reduce QByteArray to an array of byte, but it's a longer-term goal we should strive for. And we can emulate std::byte:

   enum class QByte : unsigned char {};

plus C++17 gives us a type that, for all intents and purposes, is a std::byte (it's a different type and it has a different name, but it's behaviour-compatible, as in: Qt 7 can do s/QByte/std::byte/wg and it will work.

As for char8_t, it's C++20. We're not going to enforce compiling Qt with
-std=c++2a.

Lars said "and selected C++20 features". char8_t is a game-changer for Qt. I don't expect we can depend on it, but this, and the other two (std::byte and CTAD) are, from my POV, high amongst the features that have the most impact on the Qt API.

Thanks,
Marc
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to