Trying to use QFuture and QFutureWatcher for the first time
-
I have a class called GridData that has a public member function:
void interpolate(QPromise<void>& promise, const std::vector<double>& x, const std::vector<double>& y, const std::vector<double>& z, const std::vector<double>& xg, const std::vector<double>& yg, std::vector<double>& zg, InterpolationType type, float data = 0.0);I'm trying to use that, attempting to follow the example for QtConcurrent.run in the docs which looks like:
extern void aFunction(QPromise<void> &promise, int arg1, const QString &arg2); int integer = ...; QString string = ...; QFuture<void> future = QtConcurrent::run(aFunction, integer, string);my code:
QFuture<void> future = QtConcurrent::run(gridData->interpolate(xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f)); futureWatcher->setFuture(future);but I get:
D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(223,56): error C2664: 'void DSS::GridData::interpolate(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float)': cannot convert argument 1 from 'std::vector<double,std::allocator<double>>' to 'QPromise<void> &' 1>(compiling source file '/QualityChart.cpp') 1> D:\Github\DSS\Tools\griddata.h(68,13): 1> see declaration of 'DSS::GridData::interpolate' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(223,56): 1> while trying to match the argument list '(std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, DSS::GridData::InterpolationType, float)' 1>what am I doing wrong please, and how do I fix it?
Thanks, David
-
I have a class called GridData that has a public member function:
void interpolate(QPromise<void>& promise, const std::vector<double>& x, const std::vector<double>& y, const std::vector<double>& z, const std::vector<double>& xg, const std::vector<double>& yg, std::vector<double>& zg, InterpolationType type, float data = 0.0);I'm trying to use that, attempting to follow the example for QtConcurrent.run in the docs which looks like:
extern void aFunction(QPromise<void> &promise, int arg1, const QString &arg2); int integer = ...; QString string = ...; QFuture<void> future = QtConcurrent::run(aFunction, integer, string);my code:
QFuture<void> future = QtConcurrent::run(gridData->interpolate(xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f)); futureWatcher->setFuture(future);but I get:
D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(223,56): error C2664: 'void DSS::GridData::interpolate(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float)': cannot convert argument 1 from 'std::vector<double,std::allocator<double>>' to 'QPromise<void> &' 1>(compiling source file '/QualityChart.cpp') 1> D:\Github\DSS\Tools\griddata.h(68,13): 1> see declaration of 'DSS::GridData::interpolate' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(223,56): 1> while trying to match the argument list '(std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, std::vector<double,std::allocator<double>>, DSS::GridData::InterpolationType, float)' 1>what am I doing wrong please, and how do I fix it?
Thanks, David
@Perdrix
The following quite untested but hopefully correct :)QFuture<void> future = QtConcurrent::run(gridData->interpolate(xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f));This is conceptually wrong, as
gridData->interpolate(...)as a parameter would actually execute the function. Per the docs you have to pass (a reference to) the function you want called toQtConcurrent::run(), followed by the arguments as their own, separate parameters toQtConcurrent::run().The next complication is that you want to call a member function on an object/instance.
The last complication is that the syntax (order of parameters to
QtConcurrent::run()) appears to have changed at Qt6. A lot of older solutions you will find on the web presumably no longer work. Following
https://doc.qt.io/qt-6/concurrent-changes-qt6.html#qtconcurrent-run
https://stackoverflow.com/questions/70054114/how-to-run-a-member-function-in-qtconcurrent-in-qt6
I think you want:QFuture<void> future = QtConcurrent::run(&GridData::interpolate, gridData, xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f);The first argument is the class method to call, the second argument is the object/instance to call it on and the remaining arguments are parameters to pass to the method call.
All being well, and with your
interpolate()function havingQPromise<void>& promiseas its first parameter (https://doc.qt.io/qt-6/qtconcurrentrun.html#the-mandatory-qpromise-argument),QtConcurrent::run()will rearrange all the arguments to produce something like the following:QPromise<void> promise; gridData->interpolate(promise, xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f); return promise; -
@JonB I tried all sorts of stuff around what you suggested, and I've now made interpolate a static member function of GridData.
However, I still can't get it to compile (even though GridData::interpolate is now just a common C++ function ptr AFAIK.
future = QtConcurrent::run(GridData::interpolate, xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f);gets me this mess of errors:
1>QualityChart.cpp 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(29,19): error C2338: static_assert failed: 'It's not possible to invoke the function with passed arguments.' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(29,19): 1> the template instantiation context (the oldest one first) is 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,28): 1> see reference to function template instantiation 'auto QtConcurrent::run<void(__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,DSS::GridData::InterpolationType,float>(Function,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType &&,float &&)' being compiled 1> with 1> [ 1> Function=void (__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see reference to function template instantiation 'auto QtConcurrent::run<void(__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,_Ty,float>(QThreadPool *,Function,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,_Ty &&,float &&)' being compiled 1> with 1> [ 1> _Ty=DSS::GridData::InterpolationType, 1> Function=void (__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see reference to class template instantiation 'QtConcurrent::TaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(218,30): 1> see reference to class template instantiation 'QtConcurrent::TaskResolverHelper<std::integral_constant<bool,false>,Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(213,18): 1> see reference to class template instantiation 'QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(195,17): 1> while compiling class template member function 'auto QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run(std::tuple<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float> &&,const QtConcurrent::TaskStartParameters &)' 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see the first reference to 'QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run' in 'QtConcurrent::run' 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see the first reference to 'QtConcurrent::run' in 'QtConcurrent::run' 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,21): 1> see reference to class template instantiation 'QtConcurrent::StoredFunctionCallWithPromise<Function,QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(141,41): 1> see reference to class template instantiation 'QtConcurrent::FunctionResolver<Function,PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float), 1> PromiseType=QtConcurrent::PromiseTaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(85,18): 1> see reference to class template instantiation 'QtConcurrent::FunctionResolverHelper<std::integral_constant<bool,false>,Function,PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float), 1> PromiseType=QtConcurrent::PromiseTaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(73,18): 1> see reference to class template instantiation 'QtConcurrent::NonMemberFunctionResolver<Function,PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float), 1> PromiseType=QtConcurrent::PromiseTaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType 1> ] 1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits(1838,78): error C2794: 'type': is not a member of any direct or indirect base class of 'std::_Invoke_traits_nonzero<void,void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),QPromise<void> &,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits(1838,78): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(31,39): 1> see reference to alias template instantiation 'std::invoke_result_t<void(__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),QPromise<void>&,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(31,39): error C2938: 'std::invoke_result_t' : Failed to specialize alias template 1>(compiling source file '/QualityChart.cpp') 1>Done building project "DeepSkyStacker.vcxproj" -- FAILED. -
@JonB I tried all sorts of stuff around what you suggested, and I've now made interpolate a static member function of GridData.
However, I still can't get it to compile (even though GridData::interpolate is now just a common C++ function ptr AFAIK.
future = QtConcurrent::run(GridData::interpolate, xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f);gets me this mess of errors:
1>QualityChart.cpp 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(29,19): error C2338: static_assert failed: 'It's not possible to invoke the function with passed arguments.' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(29,19): 1> the template instantiation context (the oldest one first) is 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,28): 1> see reference to function template instantiation 'auto QtConcurrent::run<void(__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,DSS::GridData::InterpolationType,float>(Function,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType &&,float &&)' being compiled 1> with 1> [ 1> Function=void (__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see reference to function template instantiation 'auto QtConcurrent::run<void(__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,std::vector<double,std::allocator<double>>&,_Ty,float>(QThreadPool *,Function,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,_Ty &&,float &&)' being compiled 1> with 1> [ 1> _Ty=DSS::GridData::InterpolationType, 1> Function=void (__cdecl &)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see reference to class template instantiation 'QtConcurrent::TaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(218,30): 1> see reference to class template instantiation 'QtConcurrent::TaskResolverHelper<std::integral_constant<bool,false>,Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(213,18): 1> see reference to class template instantiation 'QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(195,17): 1> while compiling class template member function 'auto QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run(std::tuple<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float> &&,const QtConcurrent::TaskStartParameters &)' 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see the first reference to 'QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run' in 'QtConcurrent::run' 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see the first reference to 'QtConcurrent::run' in 'QtConcurrent::run' 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,21): 1> see reference to class template instantiation 'QtConcurrent::StoredFunctionCallWithPromise<Function,QtConcurrent::PromiseTaskResolver<Function,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(141,41): 1> see reference to class template instantiation 'QtConcurrent::FunctionResolver<Function,PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float), 1> PromiseType=QtConcurrent::PromiseTaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(85,18): 1> see reference to class template instantiation 'QtConcurrent::FunctionResolverHelper<std::integral_constant<bool,false>,Function,PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float), 1> PromiseType=QtConcurrent::PromiseTaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(73,18): 1> see reference to class template instantiation 'QtConcurrent::NonMemberFunctionResolver<Function,PromiseType,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1> with 1> [ 1> Function=void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float), 1> PromiseType=QtConcurrent::PromiseTaskResolver<void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::run::PromiseType 1> ] 1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits(1838,78): error C2794: 'type': is not a member of any direct or indirect base class of 'std::_Invoke_traits_nonzero<void,void (__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),QPromise<void> &,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\type_traits(1838,78): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(31,39): 1> see reference to alias template instantiation 'std::invoke_result_t<void(__cdecl *)(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),QPromise<void>&,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' being compiled 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(31,39): error C2938: 'std::invoke_result_t' : Failed to specialize alias template 1>(compiling source file '/QualityChart.cpp') 1>Done building project "DeepSkyStacker.vcxproj" -- FAILED. -
That gave a most horrid slew of errors starting like this:
C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): error C2440: 'initializing': cannot convert from 'initializer list' to 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple': function does not take 10 arguments 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(532,5): 1> could be 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(520,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(513,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(507,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(500,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(494,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(485,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(477,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(468,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(460,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(456,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(450,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(442,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const _This &,const std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const DSS::GridData::InterpolationType &,const float &)' 1> with 1> [ 1> _This=void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] _Ty=float 1> ] -
That gave a most horrid slew of errors starting like this:
C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): error C2440: 'initializing': cannot convert from 'initializer list' to 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple': function does not take 10 arguments 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(532,5): 1> could be 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(520,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(513,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(507,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(500,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(494,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(485,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(477,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(468,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(460,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(456,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(450,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(442,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float),std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,std::vector<double,std::allocator<double>>,DSS::GridData::InterpolationType,float>::tuple(std::allocator_arg_t,const _Alloc &,const _This &,const std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const DSS::GridData::InterpolationType &,const float &)' 1> with 1> [ 1> _This=void (__cdecl DSS::GridData::* )(QPromise<void> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,const std::vector<double,std::allocator<double>> &,std::vector<double,std::allocator<double>> &,DSS::GridData::InterpolationType,float) 1> ] _Ty=float 1> ]@Perdrix
While you await an expert, or someone to test (I am not at Qt at this time). If I wanted to investigate further, I would export a test member method fromGridDatawithout theQPromiseand with no parameters. And get that working. Supposedly in Qt6:class GridData { public: void test() const {} }; QtConcurrent::run(&GridData::test, gridDataInstancePointer);as per the answers in e.g. https://stackoverflow.com/questions/70054114/how-to-run-a-member-function-in-qtconcurrent-in-qt6.
If that works start adding in some parameters to
test()and then theQPromise. -
The full horrid set of errors is too large to post here :(
So I've placed it on my website as a text file:
http://www.perdrix.co.uk/QtConcurrentRunErrors.txtEven the totally trivial case:
//void test([[maybe_unused]]QPromise<void>& promise) const {} void test() const {}invoked with:
future = QtConcurrent::run(&GridData::test, gridData);fails:
1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple': function does not take 2 arguments 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(532,5): 1> could be 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(520,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(513,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(507,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(500,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(494,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(485,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(477,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(468,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(460,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(456,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(450,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(442,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const _This &,const std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &)' 1> with 1> [ 1> _This=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(435,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(427,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(406,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(399,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(393,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(386,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(381,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(373,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(366,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(358,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(346,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_This2 &&,_Rest2 ...) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(336,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const _This &,const std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &) noexcept(<expr>)' 1> with 1> [ 1> _This=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(329,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(void) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(322,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,const _Alloc &,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(319,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,const _Alloc &,_Tpl &&,std::integer_sequence<size_t,_Indices2...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(313,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(307,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(304,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,_Tpl &&,std::integer_sequence<size_t,_Indices1...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(300,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,_This2 &&,_Rest2 ...)' 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> while trying to match the argument list '(_Ty, std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>)' 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> the template instantiation context (the oldest one first) is 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,28): 1> see reference to function template instantiation 'auto QtConcurrent::run<void(__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&>(Function &&,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &)' being compiled 1> with 1> [ 1> Function=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see reference to function template instantiation 'auto QtConcurrent::run<_Ty,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&>(QThreadPool *,Function &&,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &)' being compiled 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const, 1> Function=void (__cdecl DSS::GridData::* )(void) const 1> ] 1David
-
The full horrid set of errors is too large to post here :(
So I've placed it on my website as a text file:
http://www.perdrix.co.uk/QtConcurrentRunErrors.txtEven the totally trivial case:
//void test([[maybe_unused]]QPromise<void>& promise) const {} void test() const {}invoked with:
future = QtConcurrent::run(&GridData::test, gridData);fails:
1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple': function does not take 2 arguments 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(532,5): 1> could be 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(520,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(513,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(507,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(500,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(494,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(485,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(477,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(468,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(460,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(456,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(450,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(442,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &,const _This &,const std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &)' 1> with 1> [ 1> _This=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(435,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::allocator_arg_t,const _Alloc &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(427,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(406,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(399,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(393,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(386,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(381,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(373,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(366,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(358,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(346,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_This2 &&,_Rest2 ...) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(336,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(const _This &,const std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &) noexcept(<expr>)' 1> with 1> [ 1> _This=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(329,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(void) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(322,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,const _Alloc &,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(319,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,const _Alloc &,_Tpl &&,std::integer_sequence<size_t,_Indices2...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(313,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(307,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(304,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,_Tpl &&,std::integer_sequence<size_t,_Indices1...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(300,5): 1> or 'std::tuple<void (__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>>::tuple(_Tag,_This2 &&,_Rest2 ...)' 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> while trying to match the argument list '(_Ty, std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>)' 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> the template instantiation context (the oldest one first) is 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,28): 1> see reference to function template instantiation 'auto QtConcurrent::run<void(__cdecl DSS::GridData::* )(void) const,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&>(Function &&,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &)' being compiled 1> with 1> [ 1> Function=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see reference to function template instantiation 'auto QtConcurrent::run<_Ty,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&>(QThreadPool *,Function &&,std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> &)' being compiled 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const, 1> Function=void (__cdecl DSS::GridData::* )(void) const 1> ] 1David
@Perdrix said in Trying to use QFuture and QFutureWatcher for the first time:
QtConcurrent::run(&GridData::test, gridData);Just in case your version of Qt does not have this apparent "parameter order swap for member methods introduced at Qt6", did you just verify it's not:
QtConcurrent::run(gridData, &GridData::test);Just to be sure :)
In a moment I will type in the simplest case in my Qt6/gcc and verify....
-
Hmmm I doubt that's the issue as this is 6.10.0. However I changed that invocation:
future = QtConcurrent::run(gridData, &GridData::test);and got this:
1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): error C2440: 'initializing': cannot convert from 'initializer list' to 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple': function does not take 2 arguments 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(532,5): 1> could be 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(520,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(513,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(507,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(500,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(494,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(485,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(477,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(468,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(460,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(456,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(450,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(442,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const _This &,void (__cdecl DSS::GridData::* const &)(void) const)' 1> with 1> [ 1> _This=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(435,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(427,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(406,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(399,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(393,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(386,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(381,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(373,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(366,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(358,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(346,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_This2 &&,_Rest2 ...) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(336,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const _This &,void (__cdecl DSS::GridData::* const &)(void) const) noexcept(<expr>)' 1> with 1> [ 1> _This=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(329,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(void) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(322,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,const _Alloc &,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(319,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,const _Alloc &,_Tpl &&,std::integer_sequence<size_t,_Indices2...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(313,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(307,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(304,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,_Tpl &&,std::integer_sequence<size_t,_Indices1...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(300,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,_This2 &&,_Rest2 ...)' 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> while trying to match the argument list '(std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>, _Ty)' 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> the template instantiation context (the oldest one first) is 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,28): 1> see reference to function template instantiation 'auto QtConcurrent::run<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&,void(__cdecl DSS::GridData::* )(void) const>(Function,void (__cdecl DSS::GridData::* &&)(void) const)' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> & 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see reference to function template instantiation 'auto QtConcurrent::run<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&,_Ty>(QThreadPool *,Function,_Ty &&)' being compiled 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const, 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> & 1> ] 1>C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,61): error C2039: '()': is not a member of 'std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\memory(3347,7): 1> see declaration of 'std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>' 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,61): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see reference to class template instantiation 'QtConcurrent::TaskResolver<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(218,30): 1> see reference to class template instantiation 'QtConcurrent::TaskResolverHelper<std::integral_constant<bool,false>,Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(213,18): 1> see reference to class template instantiation 'QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,53): 1> see reference to class template instantiation 'QtPrivate::ArgResolver<Function>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1>C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,22): error C3770: '<error type>': is not a valid base class 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,53): error C3083: 'IsPromise': the symbol to the left of a '::' must be a type 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: 'value': is not a member of 'QtPrivate::ArgResolver<Function>' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: with 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: [ 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: ] 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,8): 1> see declaration of 'QtPrivate::ArgResolver<Function>' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: 'PromiseType': is not a member of 'QtPrivate::ArgResolver<Function>' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: with 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: [ 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: ] 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,8): 1> see declaration of 'QtPrivate::ArgResolver<Function>' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see reference to class template instantiation 'QtConcurrent::TaskResolver<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(218,30): 1> see reference to class template instantiation 'QtConcurrent::TaskResolverHelper<std::integral_constant<bool,false>,Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(213,18): 1> see reference to class template instantiation 'QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(195,17): 1> while compiling class template member function 'auto QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>::run(std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const> &&,const QtConcurrent::TaskStartParameters &)' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see the first reference to 'QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>::run' in 'QtConcurrent::run' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see the first reference to 'QtConcurrent::run' in 'QtConcurrent::run' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2061: syntax error: identifier 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,61): error C2065: 'PromiseType': undeclared identifier 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,21): error C2923: 'QtConcurrent::StoredFunctionCallWithPromise': 'PromiseType' is not a valid template type argument for parameter 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,61): 1> see declaration of 'PromiseType' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2641: cannot deduce template arguments for 'QtConcurrent::StoredFunctionCallWithPromise' 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2780: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(std::tuple<decay<_Ty>::type,decay<_Types>::type...> &&,std::integer_sequence<size_t,Is...>)': expects 2 arguments - 1 provided 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(162,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2783: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(std::tuple<decay<_Ty>::type,decay<_Types>::type...> &&)': could not deduce template argument for 'Function' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(148,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2783: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(std::tuple<decay<_Ty>::type,decay<_Types>::type...> &&)': could not deduce template argument for 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(148,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2783: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(Function &&,Args ...)': could not deduce template argument for 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(142,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2784: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...>)': could not deduce template argument for 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...>' from 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(138,8): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2514: 'QtConcurrent::StoredFunctionCallWithPromise': class template cannot be constructed 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(138,8): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): error C2679: binary '=': no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion) 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture.h(307,1): 1> could be 'QFuture<void> &QFuture<void>::operator =(QFuture<void> &&)' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> 'QFuture<void> &QFuture<void>::operator =(QFuture<void> &&)': cannot convert argument 2 from 'void' to 'QFuture<void> &&' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,31): 1> Expressions of type void cannot be converted to other types 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture.h(307,1): 1> or 'QFuture<void> &QFuture<void>::operator =(const QFuture<void> &)' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> 'QFuture<void> &QFuture<void>::operator =(const QFuture<void> &)': cannot convert argument 2 from 'void' to 'const QFuture<void> &' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,31): 1> Expressions of type void cannot be converted to other types 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture.h(53,20): 1> or 'QFuture<void> &QFuture<void>::operator =(const QFuture<U> &)' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> 'QFuture<void> &QFuture<void>::operator =(const QFuture<U> &)': could not deduce template argument for 'const QFuture<U> &' from 'void' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> while trying to match the argument list '(QFuture<void>, void)' -
Hmmm I doubt that's the issue as this is 6.10.0. However I changed that invocation:
future = QtConcurrent::run(gridData, &GridData::test);and got this:
1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): error C2440: 'initializing': cannot convert from 'initializer list' to 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple': function does not take 2 arguments 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(532,5): 1> could be 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(520,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(513,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(507,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(500,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::pair<_First,_Second> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(494,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(485,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(477,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(468,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<_Types2...> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(460,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const> &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(456,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const> &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(450,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(442,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &,const _This &,void (__cdecl DSS::GridData::* const &)(void) const)' 1> with 1> [ 1> _This=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(435,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::allocator_arg_t,const _Alloc &)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(427,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Other &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(406,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(399,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::pair<_Other1,_Other2> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(393,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(386,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::pair<_Other1,_Other2> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(381,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(373,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::tuple<_Types1...> &&) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(366,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(358,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(std::tuple<_Types1...> &) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(346,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_This2 &&,_Rest2 ...) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(336,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(const _This &,void (__cdecl DSS::GridData::* const &)(void) const) noexcept(<expr>)' 1> with 1> [ 1> _This=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(329,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(void) noexcept(<expr>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(322,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,const _Alloc &,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(319,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,const _Alloc &,_Tpl &&,std::integer_sequence<size_t,_Indices2...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(313,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,const _Alloc &,_This2 &&,_Rest2 ...)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(307,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,_Tpl &&)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(304,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,_Tpl &&,std::integer_sequence<size_t,_Indices1...>)' 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\tuple(300,5): 1> or 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>::tuple(_Tag,_This2 &&,_Rest2 ...)' 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> while trying to match the argument list '(std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>, _Ty)' 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(46,43): 1> the template instantiation context (the oldest one first) is 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,28): 1> see reference to function template instantiation 'auto QtConcurrent::run<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&,void(__cdecl DSS::GridData::* )(void) const>(Function,void (__cdecl DSS::GridData::* &&)(void) const)' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> & 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see reference to function template instantiation 'auto QtConcurrent::run<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>&,_Ty>(QThreadPool *,Function,_Ty &&)' being compiled 1> with 1> [ 1> _Ty=void (__cdecl DSS::GridData::* )(void) const, 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> & 1> ] 1>C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,61): error C2039: '()': is not a member of 'std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\memory(3347,7): 1> see declaration of 'std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>' 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,61): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see reference to class template instantiation 'QtConcurrent::TaskResolver<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(218,30): 1> see reference to class template instantiation 'QtConcurrent::TaskResolverHelper<std::integral_constant<bool,false>,Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(213,18): 1> see reference to class template instantiation 'QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,53): 1> see reference to class template instantiation 'QtPrivate::ArgResolver<Function>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1>C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,22): error C3770: '<error type>': is not a valid base class 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,53): error C3083: 'IsPromise': the symbol to the left of a '::' must be a type 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: 'value': is not a member of 'QtPrivate::ArgResolver<Function>' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: with 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: [ 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(190,64): error C2039: ] 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,8): 1> see declaration of 'QtPrivate::ArgResolver<Function>' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: 'PromiseType': is not a member of 'QtPrivate::ArgResolver<Function>' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: with 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: [ 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2039: ] 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture_impl.h(185,8): 1> see declaration of 'QtPrivate::ArgResolver<Function>' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): 1> the template instantiation context (the oldest one first) is 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see reference to class template instantiation 'QtConcurrent::TaskResolver<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(218,30): 1> see reference to class template instantiation 'QtConcurrent::TaskResolverHelper<std::integral_constant<bool,false>,Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(213,18): 1> see reference to class template instantiation 'QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>' being compiled 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(195,17): 1> while compiling class template member function 'auto QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>::run(std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const> &&,const QtConcurrent::TaskStartParameters &)' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(48,73): 1> see the first reference to 'QtConcurrent::PromiseTaskResolver<Function,void (__cdecl DSS::GridData::* )(void) const>::run' in 'QtConcurrent::run' 1> with 1> [ 1> Function=std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>> 1> ] 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentrun.h(65,12): 1> see the first reference to 'QtConcurrent::run' in 'QtConcurrent::run' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(196,72): error C2061: syntax error: identifier 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,61): error C2065: 'PromiseType': undeclared identifier 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,21): error C2923: 'QtConcurrent::StoredFunctionCallWithPromise': 'PromiseType' is not a valid template type argument for parameter 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,61): 1> see declaration of 'PromiseType' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2641: cannot deduce template arguments for 'QtConcurrent::StoredFunctionCallWithPromise' 1>(compiling source file '/QualityChart.cpp') 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2780: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(std::tuple<decay<_Ty>::type,decay<_Types>::type...> &&,std::integer_sequence<size_t,Is...>)': expects 2 arguments - 1 provided 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(162,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2783: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(std::tuple<decay<_Ty>::type,decay<_Types>::type...> &&)': could not deduce template argument for 'Function' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(148,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2783: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(std::tuple<decay<_Ty>::type,decay<_Types>::type...> &&)': could not deduce template argument for 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(148,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2783: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(Function &&,Args ...)': could not deduce template argument for 'PromiseType' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(142,5): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2784: 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...> QtConcurrent::StoredFunctionCallWithPromise(QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...>)': could not deduce template argument for 'QtConcurrent::StoredFunctionCallWithPromise<Function,PromiseType,Args...>' from 'std::tuple<std::unique_ptr<DSS::GridData,std::default_delete<DSS::GridData>>,void (__cdecl DSS::GridData::* )(void) const>' 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(138,8): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(197,82): error C2514: 'QtConcurrent::StoredFunctionCallWithPromise': class template cannot be constructed 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtConcurrent\qtconcurrentstoredfunctioncall.h(138,8): 1> see declaration of 'QtConcurrent::StoredFunctionCallWithPromise' 1>D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): error C2679: binary '=': no operator found which takes a right-hand operand of type 'void' (or there is no acceptable conversion) 1>(compiling source file '/QualityChart.cpp') 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture.h(307,1): 1> could be 'QFuture<void> &QFuture<void>::operator =(QFuture<void> &&)' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> 'QFuture<void> &QFuture<void>::operator =(QFuture<void> &&)': cannot convert argument 2 from 'void' to 'QFuture<void> &&' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,31): 1> Expressions of type void cannot be converted to other types 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture.h(307,1): 1> or 'QFuture<void> &QFuture<void>::operator =(const QFuture<void> &)' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> 'QFuture<void> &QFuture<void>::operator =(const QFuture<void> &)': cannot convert argument 2 from 'void' to 'const QFuture<void> &' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,31): 1> Expressions of type void cannot be converted to other types 1> C:\Qt\6.10.0\msvc2022_64\include\QtCore\qfuture.h(53,20): 1> or 'QFuture<void> &QFuture<void>::operator =(const QFuture<U> &)' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> 'QFuture<void> &QFuture<void>::operator =(const QFuture<U> &)': could not deduce template argument for 'const QFuture<U> &' from 'void' 1> D:\Github\DSS\DeepSkyStacker\QualityChart.cpp(234,5): 1> while trying to match the argument list '(QFuture<void>, void)'@Perdrix
The following example compiles fine just as I expected:#include <QCoreApplication> #include <QtConcurrent> void func1() { } class AClass { public: void func2() const {} void func3(int arg1, float arg2) const {} void func4(QPromise<void> &promise, int arg1, float arg2) const {} }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFuture<void> fut1 = QtConcurrent::run(func1); AClass *instance(new AClass); QFuture<void> fut2 = QtConcurrent::run(&AClass::func2, instance); QFuture<void> fut3 = QtConcurrent::run(&AClass::func3, instance, 42, 42.0f); QFuture<void> fut4 = QtConcurrent::run(&AClass::func4, instance, 42, 42.0f); return a.exec(); }gcc 13.3.0 and Qt 6.4.2 as supplied with Ubuntu 24.04 distro.
-
OK I've reduced the replication to a relatively simple case:
You can find the source files here:
http://www.perdrix.co.uk/TestQtConcurrent.zipIf you want the entire MSVC solution, say so and I will zip that up and make it available.
David -
OK I've reduced the replication to a relatively simple case:
You can find the source files here:
http://www.perdrix.co.uk/TestQtConcurrent.zipIf you want the entire MSVC solution, say so and I will zip that up and make it available.
David -
OK I've reduced the replication to a relatively simple case:
You can find the source files here:
http://www.perdrix.co.uk/TestQtConcurrent.zipIf you want the entire MSVC solution, say so and I will zip that up and make it available.
David@Perdrix said in Trying to use QFuture and QFutureWatcher for the first time:
You can find the source files here:
http://www.perdrix.co.uk/TestQtConcurrent.zipIf I just open it in Chrome nothing happens.
If I force it to download (it seems to start but never finishes) I get about 4k and then it stops.
If you want someone to access this then please verify it works for you from an incognito browsing session....
UPDATE OK, although the download does not finish properly if I rename the temporary.crdownloadfile to.zipit seems to have content.... -
OK I've reduced the replication to a relatively simple case:
You can find the source files here:
http://www.perdrix.co.uk/TestQtConcurrent.zipIf you want the entire MSVC solution, say so and I will zip that up and make it available.
David@Perdrix
So I have copied/pasted the 3 files you supply into their own project.I don't even see how what you have supplied would compile. In
griddata.hthere are two errors:- No template named
QPromise - Use of undeclared identifier
std
These are both visible in Creator. And make sense to me, as the necessary includes are not in
griddata.h. That is improved with the addition of#include <QPromise>in griddata.h. (And I had to comment out a couple of other includes.)Now I think I am down to a couple of compilation error messages like you have been showing. I will investigate further... :)
The zip file is only 4kB...
I know! But for whatever reason my Chrome does not complete the download of this file from you. It seems to get the full content but never sees it finish, so does not rename the temporary download file to the intended .zip. But doing that manually I seem to have the full zip so I am good.
- No template named
-
Don't need a template GridData only uses a reference: QPrimose<void>& promise but won't harm to include it.
Don't need to do anything for std:: stuff, so long as you call it out by its full name
@Perdrix said in Trying to use QFuture and QFutureWatcher for the first time:
void interpolate(QPromise<void>& promise, const std::vector<double>& x, const std::vector<double>& y, const std::vector<double>& z, const std::vector<double>& xg, const std::vector<double>& yg, std::vector<double>& zg, InterpolationType type, float data = 0.0);All the other
std::vector<double>&s areconst, but not the finalzgone. Intended or not? This is the error.If you make that one
consttoo it compiles.If you test just
void GridData::interpolate2(QPromise<void>& promise, const std::vector<double> &x) QFuture<void>future2 = QtConcurrent::run(&GridData::interpolate2, instance.get(), xValues);That works. But take out the
constand it fails.You could have reduced it down to just this parameter type, nothing to do with all the member methods:
void func1(QPromise<void>& promise, std::vector<double> &xValues) { } QFuture<void> fut1 = QtConcurrent::run(func1, xValues);std::vector<double> &xValuesdoes not pass. Either (or both) of adding inconstor removing the&do pass.I don't use
std::vectorand am going leave it to you now. You may need e.g. @Christian-Ehrlicher to explain the deep reason. I am not sure anyway about accessing non-const reference to arrays in the thread(s) run byQtConcurrent. As I wrote, if you can change yours toconst std::vector<double>& zgorstd::vector<double> zgit won't matter. Though of course we would like to hear from a C++ expert for the definitive explanation!Phew!
And, yes, no, C++ compiler errors, especially with templates, are not the simplest.
P.S.
Just this fails in same way:void func1(QPromise<void>& promise, int &test) { } int test; QtConcurrent::run(func1, test);And again changing
func1()to eitherconst int &testorint testworks. So nothing to do withstd::vector. You evidently cannot pass a mutable reference parameter here, I am thinkingQtConcurrent::run()does not allow this because of threading/need to copy requirements? Now that we knows this is the issue we find e.g.
https://stackoverflow.com/questions/25091518/qt-concurrent-run-pass-value-by-reference-but-the-memory-address-is-differentQtConcurrent::run creates internal copies of all arguments that you pass to it. Your thread function is then given access to these copies, not to the original arguments. Passing something by raw reference does not prevent creation of a copy. In other words, QtConcurrent::run enforces pass-by-value semantics internally.
The address that you see in the ref function is the address of that internal copy.
For this reason, if you specifically want access to the original object, instead of a naked reference you have to use something with pointer semantics or with "copyable reference" semantics.
That was a few years ago. Perhaps the definitions/compiler now show an attempt to pass a non-const reference as a compile-time error where it used to get through but then did not act as expected?
-
Argh! I need that to be a non const vector reference, as the interpolate code populates that vector.
@JonB Thanks for finding out what was stopping it working! I'd never have guessed that was the problem.
I've updated the files so it should compile OK on Linux, and refreshed the zip file:
http://www.perdrix.co.uk/TestQtConcurrent.zip
@Christian-Ehrlicher Can you advise please?Meantime I will change the code to use std::ref(zgEccentricity).
UPDATE: using std::ref(zgEccentricity) worked fine. May I suggest that some documentation updates to say you can't pass a non-const thing using a normal reference and that using std::ref might be useful. Either that or?
David