[Development] Supported compilers for Qt 6
Mutz, Marc
marc at kdab.com
Mon Aug 12 22:34:25 CEST 2019
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
More information about the Development
mailing list