Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-138255

qtdeclarative doesn't compile with C++26 (incomplete type 'const class QQmlJSScope')

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Not Evaluated
    • None
    • 6.10.0 Beta1, 6.11.0 FF
    • QML: Compiler
    • None
    • All

    Description

      In C++26, std::is_virtual_base_of, used for QWeakPointer<const QQmlJSScope>, requires a complete type:

      error: invalid use of incomplete type 'const class QQmlJSScope'
      

      Full log:

      FAILED: [code=1] qtdeclarative/src/qmlcompiler/CMakeFiles/QmlCompiler.dir/qqmljsshadowcheck.cpp.o 
      /usr/bin/c++ -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_QMLCOMPILER_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NO_AS_CONST=1 -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_FOREACH=1 -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE -DQT_NO_QSNPRINTF -DQT_NO_QSNPRINTF=1 -DQT_NO_STD_FORMAT_SUPPORT -DQT_QMLINTEGRATION_LIB -DQT_QMLTOOLINGSETTINGS_LIB -DQT_QML_LIB -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I/build/qt-prefix/src/qt-build/qtdeclarative/src/qmlcompiler/QmlCompiler_autogen/include -I/build/qt-prefix/src/qt-build/qtbase/include -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlCompiler -I/build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler -I/build/qt-prefix/src/qt-build/qtdeclarative/src/qmlcompiler -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlCompiler/6.11.0 -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlCompiler/6.11.0/QtQmlCompiler -I/build/qt-prefix/src/qt-build/qtbase/include/QtCore -I/build/qt-prefix/src/qt/qtbase/mkspecs/linux-g++ -I/build/qt-prefix/src/qt-build/qtbase/include/QtQml -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlIntegration -I/build/qt-prefix/src/qt/qtdeclarative/src/qmlintegration -I/build/qt-prefix/src/qt-build/qtdeclarative/src/qmlintegration -I/build/qt-prefix/src/qt-build/qtdeclarative/src/qml -I/build/qt-prefix/src/qt-build/qtbase/include/QtQml/6.11.0 -I/build/qt-prefix/src/qt-build/qtbase/include/QtQml/6.11.0/QtQml -I/build/qt-prefix/src/qt-build/qtbase/src/corelib -I/build/qt-prefix/src/qt-build/qtbase/include/QtCore/6.11.0 -I/build/qt-prefix/src/qt-build/qtbase/include/QtCore/6.11.0/QtCore -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlToolingSettings -I/build/qt-prefix/src/qt-build/qtdeclarative/src/qmltoolingsettings -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlToolingSettings/6.11.0 -I/build/qt-prefix/src/qt-build/qtbase/include/QtQmlToolingSettings/6.11.0/QtQmlToolingSettings -isystem /build/prefix/include -march=x86-64-v3 -g -DNDEBUG -O2 -std=gnu++26 -flto=auto -fno-fat-lto-objects -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wno-expansion-to-defined -ffat-lto-objects -fPIC -ffunction-sections -fdata-sections -Wsuggest-override -fcf-protection=full -ftrivial-auto-var-init=pattern -fstack-protector-strong -fstack-clash-protection -fno-exceptions -Winvalid-pch -include /build/qt-prefix/src/qt-build/qtdeclarative/src/qmlcompiler/CMakeFiles/QmlCompiler.dir/cmake_pch.hxx -MD -MT qtdeclarative/src/qmlcompiler/CMakeFiles/QmlCompiler.dir/qqmljsshadowcheck.cpp.o -MF qtdeclarative/src/qmlcompiler/CMakeFiles/QmlCompiler.dir/qqmljsshadowcheck.cpp.o.d -o qtdeclarative/src/qmlcompiler/CMakeFiles/QmlCompiler.dir/qqmljsshadowcheck.cpp.o -c /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljsshadowcheck.cpp
      In file included from /build/qt-prefix/src/qt/qtbase/src/corelib/global/qglobal.h:13,
                       from /build/qt-prefix/src/qt-build/qtbase/include/QtCore/qglobal.h:1,
                       from /build/qt-prefix/src/qt-build/qtbase/include/QtCore/QtCore:4,
                       from /build/qt-prefix/src/qt-build/qtdeclarative/src/qmlcompiler/CMakeFiles/QmlCompiler.dir/cmake_pch.hxx:5,
                       from <ligne-de-commande>:
      /usr/include/c++/15/type_traits: In instantiation of 'constexpr const bool std::is_virtual_base_of_v<const QQmlJSScope, const QQmlJSScope>':
      /build/qt-prefix/src/qt/qtbase/src/corelib/tools/qsharedpointer_impl.h:601:54:   required by substitution of 'template<class X, typename std::enable_if<std::is_convertible<_Up*, const QQmlJSScope*>::value, bool>::type <anonymous>, typename std::enable_if<(! is_virtual_base_of_v<const QQmlJSScope, X>), bool>::type <anonymous> > QWeakPointer<const QQmlJSScope>::QWeakPointer(QWeakPointer<T>&&) [with X = const QQmlJSScope; typename std::enable_if<std::is_convertible<_Up*, const QQmlJSScope*>::value, bool>::type <anonymous> = <missing>; typename std::enable_if<(! is_virtual_base_of_v<const QQmlJSScope, X>), bool>::type <anonymous> = <missing>]'
        601 |     using IfNotVirtualBase = typename std::enable_if<!qxp::is_virtual_base_of_v<T, X>, bool>::type;
            |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljsmetatypes_p.h:145:11:   required from here
        145 |           m_type(type),
            |           ^~~~~~~~~~~~
      /usr/include/c++/15/type_traits:3697:48: error: invalid use of incomplete type 'const class QQmlJSScope'
       3697 |   inline constexpr bool is_virtual_base_of_v = __builtin_is_virtual_base_of(_Base, _Derived);
            |                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljsloggingutils_p.h:21,
                       from /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljslogger_p.h:21,
                       from /build/qt-prefix/src/qt-build/qtbase/include/QtQmlCompiler/6.11.0/QtQmlCompiler/private/qqmljslogger_p.h:1,
                       from /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljscompilepass_p.h:18,
                       from /build/qt-prefix/src/qt-build/qtbase/include/QtQmlCompiler/6.11.0/QtQmlCompiler/private/qqmljscompilepass_p.h:1,
                       from /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljsshadowcheck_p.h:17,
                       from /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljsshadowcheck.cpp:4:
      /build/qt-prefix/src/qt/qtdeclarative/src/qmlcompiler/qqmljsloggingutils.h:13:7: note: forward declaration of 'class QQmlJSScope'
         13 | class QQmlJSScope;
            |       ^~~~~~~~~~~
      

      gcc version 15.1.1 20250528 (SUSE Linux) 

      Attachments

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

        Activity

          People

            qtqmlteam Qt Qml Team User
            abrooke Aurélien Brooke
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes