On Friday 05 June 2015 10:11:28 Frederik Gladhorn wrote:
> 

I can't tell if the qmetatype.h template magic is binary compatible or not. As 
evidenced by a recent push [1] about the IsGadget flag, it isn't.

I'm going to put a stop to this. qmetatype.h template magic is now frozen as 
of Qt 5.5 and until Qt 6.0, aside from bugfixes or pure additions that do not 
modify existing template classes.

[1] https://codereview.qt-project.org/113652

> +++ b/src/corelib/plugin/qfactoryinterface.h
>      Q_DECLARE_FLAGS(LoadHints, LoadHint)
> +    Q_FLAG(LoadHint)
> +    Q_FLAG(LoadHints)

Do we need both Q_FLAG? That looks like a mistake.

> +// ### Qt6: check if there's a better way
> +class QStringList : public QList<QString>
[...]
> -    inline void sort(Qt::CaseSensitivity cs = Qt::CaseSensitive);
> -    inline int removeDuplicates();

The above works only because:
 1) QStringList is not exported
 2) the functions in question are inlines

However, if someone derives from QStringList and exports a class, using MSVC, 
then this may be binary incompatible. See qvector_msvc.h.

I have not and will not investigate this further, so I don't know if this is 
real or not. If there's a bug reported on this, I will probably close it with 
"you're committing too many mistakes" (using MSVC and deriving from 
QStirngList).

The rest looks good, but I hope I didn't miss anything in the Q_DECL_NOTHROW, 
Q_DECL_OVERRIDE and Q_DECL_CONSTEXPR noise.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to