[Development] QVariant comparison in Qt6
Thiago Macieira
thiago.macieira at intel.com
Fri Sep 18 20:56:38 CEST 2020
On Friday, 18 September 2020 09:38:12 PDT Ville Voutilainen wrote:
> > We should use one of the types from <compare>[1]. Yes, it's C++20; we can
> > make our internal API return an integer that is convertible to those
> > types in the front-end API, under #if __has_include(<compare>).
> >
> > [1] https://en.cppreference.com/w/cpp/header/compare
>
> Why do people keep pushing C++20 facilities when we decided that C++17
> is our standard
> version? How does the int say "I can't compare this"? partial_ordering
> can do that, but what
> will the int do?
Because we should push our users to adopt new compiler versions. Having
features in Qt only available when they upgrade is a good way to do that. Want
to use old compilers? It costs more.
We can also use this to provide spaceship operator for QVariant and other
classes.
Anyway, the int suffices because we only need four values: equal/equivalent,
less than, greater than, unordered. We can even adopt the same values:
// less=0xff, equiv=0x00, greater=0x01, unordered=0x02
or we can use -127 for unordered like libc++ does or -128 like Microsoft STL.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel DPG Cloud Engineering
More information about the Development
mailing list