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

tst_qtconcurrentrun.cpp doesn't build with GCC 7.0 and C++1z

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.9.0 Beta 2
    • 5.9.0 Alpha
    • Core: QtConcurrent
    • 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

          For Gerrit Dashboard: QTBUG-59683
          # Subject Branch Project Status CR V

          Activity

            People

              sorvig Morten Sørvig
              allan.jensen Allan Sandfeld Jensen
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes