QString/QByteArray: de-pessimize op+ [1/2]: non-const return types

const return types prevent move semantics, so drop the const.

This is BC, because the operators are all inline free functions. In
particular, they're not exported (MSVC mangles the return type).

[ChangeLog][QtCore][QString/QByteArray] operator+ no longer returns
a const object, enabling move-semantics on the return value, but also
hidden detaches.

Change-Id: Ifc18f6b1df1e3840f57b2521949dbade8e11fd76
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Marc Mutz 2022-11-30 16:22:00 +01:00 committed by Thiago Macieira
parent 9204ac23a0
commit 5d41ec46e9
4 changed files with 20 additions and 20 deletions

View File

@ -3485,7 +3485,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
\sa QByteArray::compare()
*/
/*! \fn const QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
/*! \fn QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
\relates QByteArray
Returns a byte array that is the result of concatenating byte
@ -3494,7 +3494,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
\sa QByteArray::operator+=()
*/
/*! \fn const QByteArray operator+(const QByteArray &a1, const char *a2)
/*! \fn QByteArray operator+(const QByteArray &a1, const char *a2)
\relates QByteArray
\overload
@ -3503,7 +3503,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
and '\\0'-terminated string \a a2.
*/
/*! \fn const QByteArray operator+(const QByteArray &a1, char a2)
/*! \fn QByteArray operator+(const QByteArray &a1, char a2)
\relates QByteArray
\overload
@ -3512,7 +3512,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
array \a a1 and byte \a a2.
*/
/*! \fn const QByteArray operator+(const char *a1, const QByteArray &a2)
/*! \fn QByteArray operator+(const char *a1, const QByteArray &a2)
\relates QByteArray
\overload
@ -3521,7 +3521,7 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
string \a a1 and byte array \a a2.
*/
/*! \fn const QByteArray operator+(char a1, const QByteArray &a2)
/*! \fn QByteArray operator+(char a1, const QByteArray &a2)
\relates QByteArray
\overload

View File

@ -547,15 +547,15 @@ inline int QByteArray::compare(QByteArrayView a, Qt::CaseSensitivity cs) const n
qstrnicmp(data(), size(), a.data(), a.size());
}
#if !defined(QT_USE_QSTRINGBUILDER)
inline const QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
inline QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
{ return QByteArray(a1) += a2; }
inline const QByteArray operator+(const QByteArray &a1, const char *a2)
inline QByteArray operator+(const QByteArray &a1, const char *a2)
{ return QByteArray(a1) += a2; }
inline const QByteArray operator+(const QByteArray &a1, char a2)
inline QByteArray operator+(const QByteArray &a1, char a2)
{ return QByteArray(a1) += a2; }
inline const QByteArray operator+(const char *a1, const QByteArray &a2)
inline QByteArray operator+(const char *a1, const QByteArray &a2)
{ return QByteArray(a1) += a2; }
inline const QByteArray operator+(char a1, const QByteArray &a2)
inline QByteArray operator+(char a1, const QByteArray &a2)
{ return QByteArray(&a1, 1) += a2; }
#endif // QT_USE_QSTRINGBUILDER

View File

@ -6276,7 +6276,7 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
\fn const QString operator+(const QString &s1, const QString &s2)
\fn QString operator+(const QString &s1, const QString &s2)
\relates QString
Returns a string which is the result of concatenating \a s1 and \a
@ -6284,7 +6284,7 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
\fn const QString operator+(const QString &s1, const char *s2)
\fn QString operator+(const QString &s1, const char *s2)
\relates QString
Returns a string which is the result of concatenating \a s1 and \a
@ -6295,7 +6295,7 @@ QString& QString::fill(QChar ch, qsizetype size)
*/
/*!
\fn const QString operator+(const char *s1, const QString &s2)
\fn QString operator+(const char *s1, const QString &s2)
\relates QString
Returns a string which is the result of concatenating \a s1 and \a

View File

@ -1464,20 +1464,20 @@ inline bool QByteArray::operator>=(const QString &s) const
#endif // !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
#if !defined(QT_USE_FAST_OPERATOR_PLUS) && !defined(QT_USE_QSTRINGBUILDER)
inline const QString operator+(const QString &s1, const QString &s2)
inline QString operator+(const QString &s1, const QString &s2)
{ QString t(s1); t += s2; return t; }
inline const QString operator+(const QString &s1, QChar s2)
inline QString operator+(const QString &s1, QChar s2)
{ QString t(s1); t += s2; return t; }
inline const QString operator+(QChar s1, const QString &s2)
inline QString operator+(QChar s1, const QString &s2)
{ QString t(s1); t += s2; return t; }
# if !defined(QT_NO_CAST_FROM_ASCII) && !defined(QT_RESTRICTED_CAST_FROM_ASCII)
QT_ASCII_CAST_WARN inline const QString operator+(const QString &s1, const char *s2)
QT_ASCII_CAST_WARN inline QString operator+(const QString &s1, const char *s2)
{ QString t(s1); t += QString::fromUtf8(s2); return t; }
QT_ASCII_CAST_WARN inline const QString operator+(const char *s1, const QString &s2)
QT_ASCII_CAST_WARN inline QString operator+(const char *s1, const QString &s2)
{ QString t = QString::fromUtf8(s1); t += s2; return t; }
QT_ASCII_CAST_WARN inline const QString operator+(const QByteArray &ba, const QString &s)
QT_ASCII_CAST_WARN inline QString operator+(const QByteArray &ba, const QString &s)
{ QString t = QString::fromUtf8(ba); t += s; return t; }
QT_ASCII_CAST_WARN inline const QString operator+(const QString &s, const QByteArray &ba)
QT_ASCII_CAST_WARN inline QString operator+(const QString &s, const QByteArray &ba)
{ QString t(s); t += QString::fromUtf8(ba); return t; }
# endif // QT_NO_CAST_FROM_ASCII
#endif // QT_USE_QSTRINGBUILDER