Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.9.0 Alpha
-
None
Description
Something about the way 'noexcept' is handled means our qtconcurrent test chokes during compilation. I haven't verified if this is a compiler bug, but it goes away if I compile with --std=gnu++14 instead.
/opt/gcc/bin/g++-7 -c -pipe -march=corei7 -O2 -g -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_TESTLIB_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/src/qt5/build-5.9/qtbase/tests/auto/concurrent/qtconcurrentrun"' -I/src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun -I. -I../../../../include -I../../../../include/QtTest -I../../../../include/QtConcurrent -I../../../../include/QtCore -I.moc -I/src/qt5/qtbase/mkspecs/linux-g++ -o .obj/tst_qtconcurrentrun.o /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorCall2<T, FunctionPointer, Arg1, Arg2>::runFunctor() [with T = int; FunctionPointer = AConstNoExcept; Arg1 = int (AConstNoExcept::*)(int) const noexcept; Arg2 = int]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:466:47: error: no match for call to ‘(AConstNoExcept) (int (AConstNoExcept::*&)(int) const noexcept, int&)’ void runFunctor() override { this->result = function(arg1, arg2); } /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate: int AConstNoExcept::operator()() const int operator()() const Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate expects 0 arguments, 2 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: candidate: int AConstNoExcept::operator()(int) const int operator()(int in) const Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: candidate expects 1 argument, 2 provided In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorCall1<T, FunctionPointer, Arg1>::runFunctor() [with T = int; FunctionPointer = AConstNoExcept; Arg1 = int (AConstNoExcept::*)() const noexcept]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:263:47: error: no match for call to ‘(AConstNoExcept) (int (AConstNoExcept::*&)() const noexcept)’ void runFunctor() override { this->result = function(arg1); } /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate: int AConstNoExcept::operator()() const int operator()() const Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate expects 0 arguments, 1 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: candidate: int AConstNoExcept::operator()(int) const int operator()(int in) const Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: no known conversion for argument 1 from ‘int (AConstNoExcept::*)() const noexcept’ to ‘int’ In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorPointerCall2<T, FunctionPointer, Arg1, Arg2>::runFunctor() [with T = int; FunctionPointer = const AConstNoExcept; Arg1 = int (AConstNoExcept::*)(int) const noexcept; Arg2 = int]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:486:59: error: no match for call to ‘(const AConstNoExcept) (int (AConstNoExcept::*&)(int) const noexcept, int&)’ void runFunctor() override { this->result =(*function)(arg1, arg2); } ~~~~~~~~~~~^~~~~~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate: int AConstNoExcept::operator()() const int operator()() const Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate expects 0 arguments, 2 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: candidate: int AConstNoExcept::operator()(int) const int operator()(int in) const Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: candidate expects 1 argument, 2 provided In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorPointerCall1<T, FunctionPointer, Arg1>::runFunctor() [with T = int; FunctionPointer = const AConstNoExcept; Arg1 = int (AConstNoExcept::*)() const noexcept]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:283:59: error: no match for call to ‘(const AConstNoExcept) (int (AConstNoExcept::*&)() const noexcept)’ void runFunctor() override { this->result =(*function)(arg1); } ~~~~~~~~~~~^~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate: int AConstNoExcept::operator()() const int operator()() const Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:144:9: note: candidate expects 0 arguments, 1 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: candidate: int AConstNoExcept::operator()(int) const int operator()(int in) const Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:145:9: note: no known conversion for argument 1 from ‘int (AConstNoExcept::*)() const noexcept’ to ‘int’ In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorCall2<T, FunctionPointer, Arg1, Arg2>::runFunctor() [with T = int; FunctionPointer = ANoExcept; Arg1 = int (ANoExcept::*)(int) noexcept; Arg2 = int]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:466:47: error: no match for call to ‘(ANoExcept) (int (ANoExcept::*&)(int) noexcept, int&)’ void runFunctor() override { this->result = function(arg1, arg2); } /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate: int ANoExcept::operator()() int operator()() Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate expects 0 arguments, 2 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: candidate: int ANoExcept::operator()(int) int operator()(int in) Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: candidate expects 1 argument, 2 provided In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorCall1<T, FunctionPointer, Arg1>::runFunctor() [with T = int; FunctionPointer = ANoExcept; Arg1 = int (ANoExcept::*)() noexcept]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:263:47: error: no match for call to ‘(ANoExcept) (int (ANoExcept::*&)() noexcept)’ void runFunctor() override { this->result = function(arg1); } /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate: int ANoExcept::operator()() int operator()() Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate expects 0 arguments, 1 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: candidate: int ANoExcept::operator()(int) int operator()(int in) Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: no known conversion for argument 1 from ‘int (ANoExcept::*)() noexcept’ to ‘int’ In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorPointerCall2<T, FunctionPointer, Arg1, Arg2>::runFunctor() [with T = int; FunctionPointer = ANoExcept; Arg1 = int (ANoExcept::*)(int) noexcept; Arg2 = int]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:486:59: error: no match for call to ‘(ANoExcept) (int (ANoExcept::*&)(int) noexcept, int&)’ void runFunctor() override { this->result =(*function)(arg1, arg2); } ~~~~~~~~~~~^~~~~~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate: int ANoExcept::operator()() int operator()() Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate expects 0 arguments, 2 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: candidate: int ANoExcept::operator()(int) int operator()(int in) Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: candidate expects 1 argument, 2 provided In file included from ../../../../include/QtConcurrent/qtconcurrentstoredfunctioncall.h:1:0, from ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentrun.h:49, from ../../../../include/QtConcurrent/qtconcurrentrun.h:1, from /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:28: ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h: In instantiation of ‘void QtConcurrent::StoredFunctorPointerCall1<T, FunctionPointer, Arg1>::runFunctor() [with T = int; FunctionPointer = ANoExcept; Arg1 = int (ANoExcept::*)() noexcept]’: .moc/tst_qtconcurrentrun.moc:161:1: required from here ../../../../include/QtConcurrent/../../../../qtbase/src/concurrent/qtconcurrentstoredfunctioncall.h:283:59: error: no match for call to ‘(ANoExcept) (int (ANoExcept::*&)() noexcept)’ void runFunctor() override { this->result =(*function)(arg1); } ~~~~~~~~~~~^~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate: int ANoExcept::operator()() int operator()() Q_DECL_NOTHROW { return 10; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:133:9: note: candidate expects 0 arguments, 1 provided /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: candidate: int ANoExcept::operator()(int) int operator()(int in) Q_DECL_NOTHROW { return in; } ^~~~~~~~ /src/qt5/qtbase/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp:134:9: note: no known conversion for argument 1 from ‘int (ANoExcept::*)() noexcept’ to ‘int’ Makefile:2228: recipe for target '.obj/tst_qtconcurrentrun.o' failed
Attachments
Issue Links
- relates to
-
QTBUG-58142 QtConcurrent failure with noexcept pmf
- Closed
For Gerrit Dashboard: QTBUG-59683 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
189422,2 | WIP: Fix QtConcurrent::run on C++17 with noexcept attribute | 5.9 | qt/qtbase | Status: ABANDONED | -2 | 0 |