Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
6.8
-
None
-
-
f0ddab530 (dev), 5f38480c2 (6.8), a0bd57059 (dev), 6cd6c3d6d (dev), b64e918c8 (6.8)
Description
https://codereview.qt-project.org/c/qt/qtbase/+/577519 has a side-effect that QCOMPARE does not compile when called with Microsoft::WRL::ComPtr
const Microsoft::WRL::ComPtr<IUnknown> stub; const Microsoft::WRL::ComPtr<IUnknown> recovered; QCOMPARE(recovered, stub);
now fails with
K:\qt\qt6\qtbase\src\corelib\io\qdebug.h(250):error C2664: 'QByteArray QDebug::toBytesImpl(QDebug::StreamTypeErased,const void *)': cannot convert argument 2 from 'const Microsoft::WRL::Details::ComPtrRef<const Microsoft::WRL::ComPtr<IUnknown>>' to 'const void *' K:/qt/qt6/qtbase/src/corelib/io/qdebug.h(250): note: Ambiguous user-defined-conversion K:/qt/qt6/qtbase/src/corelib/io/qdebug.h(239): note: see declaration of 'QDebug::toBytesImpl' K:/qt/qt6/qtbase/src/corelib/io/qdebug.h(250): note: while trying to match the argument list '(overloaded-function, const Microsoft::WRL::Details::ComPtrRef<const Microsoft::WRL::ComPtr<IUnknown>>)' K:/qt/qt6/qtbase/src/corelib/io/qdebug.h(250): note: the template instantiation context (the oldest one first) is K:\qt\qt6\qtactiveqt\tests\auto\conversion\tst_conversion.cpp(362): note: see reference to function template instantiation 'bool QTest::qCompare<Microsoft::WRL::ComPtr<IUnknown>,Microsoft::WRL::ComPtr<IUnknown>>(const T1 &,const T2 &,const char *,const char *,const char *,int)' being compiled with [ T1=Microsoft::WRL::ComPtr<IUnknown>, T2=Microsoft::WRL::ComPtr<IUnknown> ] K:/qt/qt6/qtbase/src/testlib/qtestcase.h(622): note: see reference to function template instantiation 'const char *QTest::Internal::genericToString<D1>(const void *)' being compiled K:/qt/qt6/qtbase/src/testlib/qtestcase.h(355): note: see reference to function template instantiation 'char *QTest::toString<D1>(const T &)' being compiled
Attachments
For Gerrit Dashboard: QTBUG-127510 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
578517,3 | Avoid comparing Microsoft::WRL::ComPtr instances with QCOMPARE | dev | qt/qtactiveqt | Status: MERGED | +2 | 0 |
578534,2 | Avoid comparing Microsoft::WRL::ComPtr instances with QCOMPARE | 6.8 | qt/qtactiveqt | Status: MERGED | +2 | 0 |
578559,2 | Call std::addressof instead of operator& in QDebug::toString | dev | qt/qtbase | Status: MERGED | +2 | 0 |
578560,2 | Call std::addressof instead of operator& in QDebug::toBytes | dev | qt/qtbase | Status: MERGED | +2 | 0 |
578771,2 | Call std::addressof instead of operator& in QDebug::toString | 6.8 | qt/qtbase | Status: MERGED | +2 | 0 |