[Development] QProperty and library coding guide

Olivier Goffart olivier at woboq.com
Fri Jul 24 09:20:46 CEST 2020

On 23/07/20 22:54, Thiago Macieira wrote:
> On Thursday, 23 July 2020 12:34:06 PDT Simon Hausmann wrote:
>> I think the primary environment where a transition and resulting BC
>> breakage would be annoying is the Linux system environment with gcc. This
>> is where Olivier’s solution is quite elegant IMO.
> I'd rather go to [[no_unique_address]] instead of this. The extension doesn't
> compile in all cases (you can't have a Flexible Array Member everywhere) and
> is going to produce warnings.
> Let's just drop GCC 8.

You do not need to use the empty array everywhere: only in the helper type 
created by the Q_PRIVATE_QPROPERTY macro. And it can be conditioned on 
pre-c++20 GCC.  And I did not see any warning on compiler explorer.

For reference, here is the proposed solution:

class MyClass : public QObject
     // Generated by QT_PRIVATE_QPROPERTY
     struct _qt_property_api_foo {
         QString operator()();
	void setValue(const QString &);
	// ... more functions ...
         char empty_array[0]; // That's a GCC extension
     _qt_property_api_foo foo;

More information about the Development mailing list