Fix signature of QDebug::toString() (again)
There are zero QDebug operators that take an rvalue RHS, so there's no
need to make toString() perfectly forwarding. It just causes four¹
different versions of the identical function to be instantiated. Not
all compilers can merge the binary representations and those that try,
violate the standard (same address for different functions).
¹ {rvalue, lvalue} × {const, non-const}
Fix by taking by cref.
Amends 4097653215.
[ChangeLog][Potentially Source-Incompatible Changes][QtCore][QDebug]
The toString() static function no longer allows the called
operator<<() to modify the argument. No Qt-provided operator<<() does
that, and operators that do are probably buggy.
Change-Id: Iac1ee9d29f93fd4840b75ffe363d354a2d19a96e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 13244eef6c913bb7f27cd8fbf459f5dfe9a0ed21)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
bb10
parent
f7eddcdcb1
commit
ae515c3f2e
|
|
@ -996,7 +996,7 @@ QDebug &QDebug::resetFormat()
|
|||
*/
|
||||
|
||||
/*!
|
||||
\fn template <class T> QString QDebug::toString(T &&object)
|
||||
\fn template <class T> QString QDebug::toString(const T &object)
|
||||
\since 6.0
|
||||
|
||||
\include qdebug-toString.qdocinc
|
||||
|
|
|
|||
|
|
@ -224,11 +224,11 @@ public:
|
|||
#endif // QT_SUPPORTS_INT128
|
||||
|
||||
template <typename T>
|
||||
static QString toString(T &&object)
|
||||
static QString toString(const T &object)
|
||||
{
|
||||
QString buffer;
|
||||
QDebug stream(&buffer);
|
||||
stream.nospace() << std::forward<T>(object);
|
||||
stream.nospace() << object;
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue