Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-26386

[MSVC][std:c++20] error C2678: binary '==': no operator found which takes a left-hand operand of type 'const _Ty'

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Not Evaluated
    • Resolution: Done
    • Affects Version/s: Qt Creator 6.0.0-beta1
    • Fix Version/s: Qt Creator 6.0.0-beta2
    • Component/s: Building Qt Creator
    • Labels:
      None
    • Environment:
      Windows
    • Platform/s:
      Windows
    • Commits:
      57b5cd69b922bb377f956ce13c9e3124f1e65784 (qt-creator/qt-creator/6.0)

      Description

      Hi All,

      QTCreator latest code (master 2d99462) failed to build with /std:c++latest on MSVC. This issue is a bit similar to QTCREATORBUG-25598, both are related to erase, but not the same. That would be great if someone helps to fix this issue.

      1. git clone git://code.qt.io/qt-creator/qt-creator qt-creator
      2. cd qt-creator
      3. set CL=/D_HAS_AUTO_PTR_ETC=1 /D_HAS_DEPRECATED_RESULT_OF=1 /D_SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING /D_HAS_DEPRECATED_UNCAUGHT_EXCEPTION=1 /D_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING /std:c++latest /permissive /Zc:rewrittenExpressions-
      4. set PATH=F:\gitP\qt-creator\qt-creator\..\qt\msvc2017_64\bin;%PATH%
      5. set PATH=F:\gitP\qt-creator\qt-creator\..\jom_1_1_2;%PATH%
      6. qmake -r qtcreator.pro
      7. jom /U

      Error info:

      project.cpp
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xmemory(1991): error C2678: binary '==': no operator found which takes a left-hand operand of type 'const _Ty' (or there is no acceptable conversion)
              with
              [
                  _Ty=ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>
              ]
      C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\guiddef.h(192): note: could be 'bool operator ==(const GUID &,const GUID &)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(61): note: or       'bool operator ==(char,QLatin1Char) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(68): note: or       'bool operator ==(QLatin1Char,char) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(614): note: or       'bool operator ==(QChar,QChar) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(623): note: or       'bool operator ==(QChar,std::nullptr_t) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(625): note: or       'bool operator ==(std::nullptr_t,QChar) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qbytearray.h(662): note: or       'bool operator ==(const QByteArray &,const QByteArray &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qbytearray.h(664): note: or       'bool operator ==(const QByteArray &,const char *) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qbytearray.h(666): note: or       'bool operator ==(const char *,const QByteArray &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1825): note: or       'bool operator ==(QChar,const QString &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1844): note: or       'bool operator ==(QChar,const QStringRef &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1863): note: or       'bool operator ==(QChar,QLatin1String) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1338): note: or       'bool operator ==(QLatin1String,QLatin1String) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1762): note: or       'bool operator ==(const QStringRef &,const QStringRef &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1774): note: or       'bool operator ==(const QString &,const QStringRef &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1781): note: or       'bool operator ==(const QStringRef &,const QString &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1810): note: or       'bool operator ==(QLatin1String,const QStringRef &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1817): note: or       'bool operator ==(const QStringRef &,QLatin1String) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1836): note: or       'bool operator ==(const QString &,QChar) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1855): note: or       'bool operator ==(const QStringRef &,QChar) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1874): note: or       'bool operator ==(QLatin1String,QChar) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1882): note: or       'bool operator ==(QStringView,QStringView) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1890): note: or       'bool operator ==(QStringView,QChar) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1897): note: or       'bool operator ==(QChar,QStringView) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1905): note: or       'bool operator ==(QStringView,QLatin1String) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1912): note: or       'bool operator ==(QLatin1String,QStringView) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qpoint.h(165): note: or       'bool operator ==(const QPoint &,const QPoint &)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qpoint.h(357): note: or       'bool operator ==(const QPointF &,const QPointF &)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qhash.h(139): note: or       'bool operator ==(const QHashDummyValue &,const QHashDummyValue &) noexcept' [found using argument-dependent lookup]
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\variant(1686): note: or       'bool std::operator ==(std::monostate,std::monostate) noexcept' [found using argument-dependent lookup]
      F:\gitP\qt-creator\qt\msvc2017_64\include\QtCore\qvariant.h(609): note: or       'bool operator ==(const QVariant &,const QVariantComparisonHelper &)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qmargins.h(135): note: or       'bool operator ==(const QMargins &,const QMargins &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qmargins.h(372): note: or       'bool operator ==(const QMarginsF &,const QMarginsF &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qsize.h(175): note: or       'bool operator ==(const QSize &,const QSize &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qsize.h(350): note: or       'bool operator ==(const QSizeF &,const QSizeF &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qcursor.h(113): note: or       'bool operator ==(const QCursor &,const QCursor &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qrect.h(454): note: or       'bool operator ==(const QRect &,const QRect &) noexcept' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qrect.h(860): note: or       'bool operator ==(const QRectF &,const QRectF &) noexcept' [found using argument-dependent lookup]
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\deployablefile.h(66): note: or       'bool ProjectExplorer::operator ==(const ProjectExplorer::DeployableFile &,const ProjectExplorer::DeployableFile &)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qvector2d.h(211): note: or       'bool operator ==(const QVector2D &,const QVector2D &)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qevent.h(830): note: or       'bool operator ==(QKeyEvent *,QKeySequence::StandardKey)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qevent.h(831): note: or       'bool operator ==(QKeySequence::StandardKey,QKeyEvent *)' [found using argument-dependent lookup]
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qevent.h(865): note: or       'bool operator ==(QPointingDeviceUniqueId,QPointingDeviceUniqueId) noexcept' [found using argument-dependent lookup]
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\task.h(138): note: or       'bool ProjectExplorer::operator ==(const ProjectExplorer::Task &,const ProjectExplorer::Task &)' [found using argument-dependent lookup]
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\buildtargetinfo.h(56): note: or       'bool ProjectExplorer::operator ==(const ProjectExplorer::BuildTargetInfo &,const ProjectExplorer::BuildTargetInfo &)' [found using argument-dependent lookup]
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\thread(244): note: or       'bool std::operator ==(std::thread::id,std::thread::id) noexcept' [found using argument-dependent lookup]
      C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\guiddef.h(192): note: or 'bool operator ==(const GUID &,const GUID &)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(61): note: or 'bool operator ==(char,QLatin1Char) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(68): note: or 'bool operator ==(QLatin1Char,char) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(614): note: or 'bool operator ==(QChar,QChar) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(623): note: or 'bool operator ==(QChar,std::nullptr_t) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qchar.h(625): note: or 'bool operator ==(std::nullptr_t,QChar) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qbytearray.h(662): note: or 'bool operator ==(const QByteArray &,const QByteArray &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qbytearray.h(664): note: or 'bool operator ==(const QByteArray &,const char *) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qbytearray.h(666): note: or 'bool operator ==(const char *,const QByteArray &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1825): note: or 'bool operator ==(QChar,const QString &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1844): note: or 'bool operator ==(QChar,const QStringRef &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1863): note: or 'bool operator ==(QChar,QLatin1String) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1338): note: or 'bool operator ==(QLatin1String,QLatin1String) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1762): note: or 'bool operator ==(const QStringRef &,const QStringRef &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1774): note: or 'bool operator ==(const QString &,const QStringRef &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1781): note: or 'bool operator ==(const QStringRef &,const QString &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1810): note: or 'bool operator ==(QLatin1String,const QStringRef &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1817): note: or 'bool operator ==(const QStringRef &,QLatin1String) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1836): note: or 'bool operator ==(const QString &,QChar) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1855): note: or 'bool operator ==(const QStringRef &,QChar) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1874): note: or 'bool operator ==(QLatin1String,QChar) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1882): note: or 'bool operator ==(QStringView,QStringView) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1890): note: or 'bool operator ==(QStringView,QChar) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1897): note: or 'bool operator ==(QChar,QStringView) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1905): note: or 'bool operator ==(QStringView,QLatin1String) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qstring.h(1912): note: or 'bool operator ==(QLatin1String,QStringView) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qpoint.h(165): note: or 'bool operator ==(const QPoint &,const QPoint &)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qpoint.h(357): note: or 'bool operator ==(const QPointF &,const QPointF &)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qhash.h(139): note: or 'bool operator ==(const QHashDummyValue &,const QHashDummyValue &) noexcept' [synthesized expression 'y == x']
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\variant(1686): note: or 'bool std::operator ==(std::monostate,std::monostate) noexcept' [synthesized expression 'y == x']
      F:\gitP\qt-creator\qt\msvc2017_64\include\QtCore\qvariant.h(609): note: or 'bool operator ==(const QVariant &,const QVariantComparisonHelper &)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qmargins.h(135): note: or 'bool operator ==(const QMargins &,const QMargins &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qmargins.h(372): note: or 'bool operator ==(const QMarginsF &,const QMarginsF &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qsize.h(175): note: or 'bool operator ==(const QSize &,const QSize &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qsize.h(350): note: or 'bool operator ==(const QSizeF &,const QSizeF &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qcursor.h(113): note: or 'bool operator ==(const QCursor &,const QCursor &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qrect.h(454): note: or 'bool operator ==(const QRect &,const QRect &) noexcept' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtCore/qrect.h(860): note: or 'bool operator ==(const QRectF &,const QRectF &) noexcept' [synthesized expression 'y == x']
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\deployablefile.h(66): note: or 'bool ProjectExplorer::operator ==(const ProjectExplorer::DeployableFile &,const ProjectExplorer::DeployableFile &)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qvector2d.h(211): note: or 'bool operator ==(const QVector2D &,const QVector2D &)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qevent.h(830): note: or 'bool operator ==(QKeyEvent *,QKeySequence::StandardKey)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qevent.h(831): note: or 'bool operator ==(QKeySequence::StandardKey,QKeyEvent *)' [synthesized expression 'y == x']
      ..\..\..\..\qt\msvc2017_64\include\QtGui/qevent.h(865): note: or 'bool operator ==(QPointingDeviceUniqueId,QPointingDeviceUniqueId) noexcept' [synthesized expression 'y == x']
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\task.h(138): note: or 'bool ProjectExplorer::operator ==(const ProjectExplorer::Task &,const ProjectExplorer::Task &)' [synthesized expression 'y == x']
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\buildtargetinfo.h(56): note: or 'bool ProjectExplorer::operator ==(const ProjectExplorer::BuildTargetInfo &,const ProjectExplorer::BuildTargetInfo &)' [synthesized expression 'y == x']
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\thread(244): note: or 'bool std::operator ==(std::thread::id,std::thread::id) noexcept' [synthesized expression 'y == x']
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xmemory(1991): note: while trying to match the argument list '(std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>, const _Ty)'
              with
              [
                  _Ty=ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>
              ]
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xmemory(2029): note: see reference to function template instantiation '_FwdIt std::remove<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>*,_Uty>(_FwdIt,const _FwdIt,const _Ty &)' being compiled
              with
              [
                  _FwdIt=std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>> *,
                  _Uty=ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>,
                  _Ty=ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>
              ]
      C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\vector(1917): note: see reference to function template instantiation 'unsigned __int64 std::_Erase_remove<std::vector<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>,std::allocator<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>>>,_Uty>(_Container &,const _Uty &)' being compiled
              with
              [
                  _Uty=ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>,
                  _Container=std::vector<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>,std::allocator<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>>>
              ]
      F:\gitP\qt-creator\qt-creator\src\plugins\projectexplorer\project.cpp(381): note: see reference to function template instantiation 'unsigned __int64 std::erase<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>,std::allocator<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>>,ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>>(std::vector<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>,std::allocator<std::unique_ptr<Core::IDocument,std::default_delete<Core::IDocument>>>> &,const _Uty &)' being compiled
              with
              [
                  _Uty=ProjectExplorer::Project::setExtraProjectFiles::<lambda_1>
              ]
      
      

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            Assignee:
            con Eike Ziller
            Reporter:
            quellazhang Quella Zhang
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes