Mark ref-qualified members as always inline

MSVC and ICC on Windows always make calls to the dllexport'ed out-of-
line copy of an inline function when compiling in debug mode. This
creates an incompatibility when a compiler that understands ref-
qualified member functions (such as ICC) is used to compile code using a
DLL that was compiled with a compiler that doesn't understand (such as
MSVC 2013).

Task-number: QTBUG-48349
Change-Id: I42e7ef1a481840699a8dffff14053b7998a2a6bb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This commit is contained in:
Thiago Macieira 2015-09-18 18:04:09 -07:00
parent c644fab0ed
commit 94fb503769
3 changed files with 20 additions and 20 deletions

View File

@ -255,21 +255,21 @@ public:
# define Q_REQUIRED_RESULT
# define Q_REQUIRED_RESULT_pushed
# endif
QByteArray toLower() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray toLower() const & Q_REQUIRED_RESULT
{ return toLower_helper(*this); }
QByteArray toLower() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray toLower() && Q_REQUIRED_RESULT
{ return toLower_helper(*this); }
QByteArray toUpper() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray toUpper() const & Q_REQUIRED_RESULT
{ return toUpper_helper(*this); }
QByteArray toUpper() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray toUpper() && Q_REQUIRED_RESULT
{ return toUpper_helper(*this); }
QByteArray trimmed() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray trimmed() const & Q_REQUIRED_RESULT
{ return trimmed_helper(*this); }
QByteArray trimmed() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray trimmed() && Q_REQUIRED_RESULT
{ return trimmed_helper(*this); }
QByteArray simplified() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray simplified() const & Q_REQUIRED_RESULT
{ return simplified_helper(*this); }
QByteArray simplified() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QByteArray simplified() && Q_REQUIRED_RESULT
{ return simplified_helper(*this); }
# ifdef Q_REQUIRED_RESULT_pushed
# pragma pop_macro("Q_REQUIRED_RESULT")

View File

@ -386,25 +386,25 @@ public:
# define Q_REQUIRED_RESULT
# define Q_REQUIRED_RESULT_pushed
# endif
QString toLower() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString toLower() const & Q_REQUIRED_RESULT
{ return toLower_helper(*this); }
QString toLower() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString toLower() && Q_REQUIRED_RESULT
{ return toLower_helper(*this); }
QString toUpper() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString toUpper() const & Q_REQUIRED_RESULT
{ return toUpper_helper(*this); }
QString toUpper() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString toUpper() && Q_REQUIRED_RESULT
{ return toUpper_helper(*this); }
QString toCaseFolded() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString toCaseFolded() const & Q_REQUIRED_RESULT
{ return toCaseFolded_helper(*this); }
QString toCaseFolded() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString toCaseFolded() && Q_REQUIRED_RESULT
{ return toCaseFolded_helper(*this); }
QString trimmed() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString trimmed() const & Q_REQUIRED_RESULT
{ return trimmed_helper(*this); }
QString trimmed() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString trimmed() && Q_REQUIRED_RESULT
{ return trimmed_helper(*this); }
QString simplified() const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString simplified() const & Q_REQUIRED_RESULT
{ return simplified_helper(*this); }
QString simplified() && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QString simplified() && Q_REQUIRED_RESULT
{ return simplified_helper(*this); }
# ifdef Q_REQUIRED_RESULT_pushed
# pragma pop_macro("Q_REQUIRED_RESULT")

View File

@ -168,9 +168,9 @@ public:
Format format() const;
#if defined(Q_COMPILER_REF_QUALIFIERS) && !defined(QT_COMPILING_QIMAGE_COMPAT_CPP)
QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const & Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const & Q_REQUIRED_RESULT
{ return convertToFormat_helper(f, flags); }
QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) && Q_REQUIRED_RESULT
Q_ALWAYS_INLINE QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) && Q_REQUIRED_RESULT
{
if (convertToFormat_inplace(f, flags))
return std::move(*this);