> On 17 Jul 2020, at 09:25, Lars Knoll <lars.kn...@qt.io> wrote: > >> On 16 Jul 2020, at 23:35, Thiago Macieira <thiago.macie...@intel.com> wrote: >> >> On Thursday, 16 July 2020 13:16:41 PDT Giuseppe D'Angelo via Development >> wrote: >>> Il 16/07/20 12:43, Volker Hilsheimer ha scritto: >>>> For pre-C++20 (where it’s possible to have zero-size structs), and for >>>> compilers that don’t respect the [[no_unqiue_address]] attribute, all >>>> these struct-instances are put into a union. In that case, a class using >>>> QProperty will be larger (by the same amount no matter the number of >>>> properties) than the same class in Qt 5. With C+++ 20 and compilers that >>>> do respect [[no_unique_address]], the size and layout of these classes >>>> will be the same. >>> I'm not fully understanding this last part -- does changing compiler >>> break ABI, because the implementation of properties change (from an >>> union to [[no_unique_address]] members)? >> >> Yes. >> >> Already sent a -2 to the commit that added this support, because it can't >> work. The commit will need to be reverted. > > Yes, it can and it does work. And it’s what we should be doing on compilers > that support [[no_unique_address]]. > > It does mean that a pure C++17 and a C++20 build aren’t binary compatible, > but I think we should pay that price. > > If I remember correctly, the only compiler that doesn’t yet support it is > MSVC. BC mainly matters on desktop Linux and those all support the feature, > so we can enable it from the get go. > > Cheers, > Lars
Would it be sensible to make this a configure feature: if C++20 is explicitly enabled, use it? It’s in the standard after all. But auto-detecting it is perhaps unnecessarily fragile. Volker _______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development