[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