> 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

Reply via email to