When I tried to build OSMScout in OBS yesterday, it failed with SFOS 5.1 target with strange error:
[ 176s] In file included from /usr/include/qt5/QtCore/qfuture.h:41,
[ 176s] from /usr/include/qt5/QtCore/QtCore:100,
[ 176s] from /usr/include/qt5/QtQml/QtQmlDepends:3,
[ 176s] from /usr/include/qt5/QtQml/QtQml:3,
[ 176s] from /home/abuild/rpmbuild/BUILD/harbour-osmscout-2.43/dependencies/libosmscout/libosmscout-client-qt/src/osmscoutclientqt/SearchLocationModel.cpp:26:
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:282:33: error: expected ')' before 'initialState'
[ 176s] 282 | QFutureInterface<void>(State initialState = NoState)
[ 176s] | ~ ^~~~~~~~~~~~~
[ 176s] | )
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:285:28: error: expected unqualified-id before 'const'
[ 176s] 285 | QFutureInterface<void>(const QFutureInterface<void> &other)
[ 176s] | ^~~~~
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:285:28: error: expected ')' before 'const'
[ 176s] 285 | QFutureInterface<void>(const QFutureInterface<void> &other)
[ 176s] | ~^~~~~
[ 176s] | )
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h: In static member function 'static QFutureInterface<void> QFutureInterface<void>::canceledResult()':
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:290:67: error: no matching function for call to 'QFutureInterface<void>::QFutureInterface(QFutureInterfaceBase::State)'
[ 176s] 290 | { return QFutureInterface(State(Started | Finished | Canceled)); }
[ 176s] | ^
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:279:7: note: candidate: 'QFutureInterface<void>::QFutureInterface()'
[ 176s] 279 | class QFutureInterface<void> : public QFutureInterfaceBase
[ 176s] | ^~~~~~~~~~~~~~~~~~~~~~
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:279:7: note: candidate expects 0 arguments, 1 provided
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:279:7: note: candidate: 'QFutureInterface<void>::QFutureInterface(const QFutureInterface<void>&)'
[ 176s] /usr/include/qt5/QtCore/qfutureinterface.h:279:7: note: no known conversion for argument 1 from 'QFutureInterfaceBase::State' to 'const QFutureInterface<void>&'
After some investigation I found out that it is caused by “Functional-style cast in C++” that behaves slightly different in C++20 than C++17 and QFutureInterface<void> is evaluated as a type, not the a class constructor. Can you patch Qt to drop <void> please? It would help with usage of modern C++ standard.