Hi, I'm trying to port an application to Qt5. This is on a Linux system with
clang 3.2 and Qt 5.0.0. The application requires C++11, but this particular
file builds just fine when I remove -std=c++11 from the command line options.
Build also succeeds with Gentoo's GCC 4.6.3 invoked with -std=c++0x (there's no
-std=c++11 in that old GCC).
It seems that clang isn't terribly happy with the initialization of
QBasicAtomicInt expanded from qRegisterMetaType:
/usr/bin/clang++ -DQT_CORE_LIB -DQT_DECLARATIVE_LIB -DQT_GUI_LIB
-DQT_SCRIPT_LIB -DQT_WIDGETS_LIB -fPIE -Wall -Wextra -Wnon-virtual-dtor
-Wold-style-cast -Woverloaded-virtual -std=c++11 -g -I/opt/qt5/include
-I/opt/qt5/include/QtWidgets -I/opt/qt5/include/QtGui -I/opt/qt5/include/QtCore
-I/opt/qt5/mkspecs/linux-g++-64 -I/opt/qt5/include/QtDeclarative
-I/opt/qt5/include/QtScript -I/home/jkt/work/cesnet/opticke-site/editor
-I/home/jkt/work/cesnet/opticke-site/editor/build/qt5-clang-debug/generated
-o CMakeFiles/Types.dir/Types/DeviceTypeEngine.cpp.o -c
/home/jkt/work/cesnet/opticke-site/editor/Types/DeviceTypeEngine.cpp
In file included from
/home/jkt/work/cesnet/opticke-site/editor/Types/DeviceTypeEngine.cpp:1:
In file included from
/home/jkt/work/cesnet/opticke-site/editor/Types/DeviceTypeEngine.h:4:
In file included from /opt/qt5/include/QtDeclarative/QDeclarativeEngine:1:
In file included from /opt/qt5/include/QtDeclarative/qdeclarativeengine.h:46:
In file included from /opt/qt5/include/QtCore/qobject.h:55:
/opt/qt5/include/QtCore/qmetatype.h:669:32: error: copying variable of type
'QBasicAtomicInt' (aka 'QBasicAtomicInteger<int>') invokes deleted constructor
static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/qt5/include/QtCore/qmetatype.h:534:82: note: in instantiation of member
function 'QMetaTypeIdQObject<QMLDeviceType *, true>::qt_metatype_id' requested
here
static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return
QMetaTypeId<T>::qt_metatype_id(); }
^
/opt/qt5/include/QtCore/qmetatype.h:618:12: note: in instantiation of function
template specialization 'qRegisterNormalizedMetaType<QMLDeviceType *>'
requested here
return qRegisterNormalizedMetaType<T>(normalizedTypeName, dummy, defined);
^
/opt/qt5/include/QtDeclarative/qdeclarative.h:170:9: note: in instantiation of
function template specialization 'qRegisterMetaType<QMLDeviceType *>' requested
here
qRegisterMetaType<T *>(pointerName.constData()),
^
/home/jkt/work/cesnet/opticke-site/editor/Types/DeviceTypeEngine.cpp:12:5:
note: in instantiation of function template specialization
'qmlRegisterType<QMLDeviceType>' requested here
qmlRegisterType<QMLDeviceType>("org.czechlight.ndl.Types", 1, 0,
"DeviceType");
^
/opt/qt5/include/QtCore/qbasicatomic.h:198:5: note: function has been
explicitly marked deleted here
QBasicAtomicInteger(const QBasicAtomicInteger &) = delete;
Is that a bug in clang, or in Qt?
With kind regards,
Jan
--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development