Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Trying to use QFuture and QFutureWatcher for the first time
Forum Updated to NodeBB v4.3 + New Features

Trying to use QFuture and QFutureWatcher for the first time

Scheduled Pinned Locked Moved Unsolved General and Desktop
25 Posts 2 Posters 636 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • PerdrixP Offline
    PerdrixP Offline
    Perdrix
    wrote last edited by Perdrix
    #1

    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

    JonBJ 1 Reply Last reply
    0
    • PerdrixP Perdrix

      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

      JonBJ Online
      JonBJ Online
      JonB
      wrote last edited by JonB
      #2

      @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 to QtConcurrent::run(), followed by the arguments as their own, separate parameters to QtConcurrent::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 having QPromise<void>& promise as 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;
      
      1 Reply Last reply
      1
      • PerdrixP Offline
        PerdrixP Offline
        Perdrix
        wrote last edited by Perdrix
        #3

        @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.
        
        JonBJ 1 Reply Last reply
        0
        • PerdrixP Perdrix

          @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.
          
          JonBJ Online
          JonBJ Online
          JonB
          wrote last edited by
          #4

          @Perdrix
          OOI what did my suggested

          QFuture<void> future = QtConcurrent::run(&GridData::interpolate, gridData, xValues, yValues, fwhmValues, xg, yg, zgFWHM, GridData::InterpolationType::GRID_NNIDW, 10.f);
          

          give?

          1 Reply Last reply
          0
          • PerdrixP Offline
            PerdrixP Offline
            Perdrix
            wrote last edited by
            #5

            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>        ]
            
            JonBJ 1 Reply Last reply
            0
            • PerdrixP Perdrix

              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>        ]
              
              JonBJ Online
              JonBJ Online
              JonB
              wrote last edited by JonB
              #6

              @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 from GridData without the QPromise and 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 the QPromise.

              1 Reply Last reply
              0
              • PerdrixP Offline
                PerdrixP Offline
                Perdrix
                wrote last edited by Perdrix
                #7

                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.txt

                Even 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>        ]
                1
                

                David

                JonBJ 1 Reply Last reply
                0
                • PerdrixP Perdrix

                  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.txt

                  Even 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>        ]
                  1
                  

                  David

                  JonBJ Online
                  JonBJ Online
                  JonB
                  wrote last edited by JonB
                  #8

                  @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....

                  1 Reply Last reply
                  0
                  • PerdrixP Offline
                    PerdrixP Offline
                    Perdrix
                    wrote last edited by
                    #9

                    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)'
                    
                    JonBJ 1 Reply Last reply
                    0
                    • PerdrixP Perdrix

                      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)'
                      
                      JonBJ Online
                      JonBJ Online
                      JonB
                      wrote last edited by JonB
                      #10

                      @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.

                      1 Reply Last reply
                      1
                      • PerdrixP Offline
                        PerdrixP Offline
                        Perdrix
                        wrote last edited by Perdrix
                        #11

                        OK I've reduced the replication to a relatively simple case:

                        You can find the source files here:
                        http://www.perdrix.co.uk/TestQtConcurrent.zip

                        If you want the entire MSVC solution, say so and I will zip that up and make it available.
                        David

                        JonBJ 3 Replies Last reply
                        0
                        • PerdrixP Perdrix

                          OK I've reduced the replication to a relatively simple case:

                          You can find the source files here:
                          http://www.perdrix.co.uk/TestQtConcurrent.zip

                          If you want the entire MSVC solution, say so and I will zip that up and make it available.
                          David

                          JonBJ Online
                          JonBJ Online
                          JonB
                          wrote last edited by
                          #12

                          @Perdrix
                          Can't you start by just copy/paste my code and say whether that works or not....?!

                          1 Reply Last reply
                          0
                          • PerdrixP Offline
                            PerdrixP Offline
                            Perdrix
                            wrote last edited by
                            #13

                            I did precisely that and then extended it until I got a fail.
                            D.

                            JonBJ 1 Reply Last reply
                            0
                            • PerdrixP Perdrix

                              I did precisely that and then extended it until I got a fail.
                              D.

                              JonBJ Online
                              JonBJ Online
                              JonB
                              wrote last edited by
                              #14

                              @Perdrix Ah, well it helps if you say that! I will have a look at your code to see if I can spot something different.....

                              1 Reply Last reply
                              0
                              • PerdrixP Perdrix

                                OK I've reduced the replication to a relatively simple case:

                                You can find the source files here:
                                http://www.perdrix.co.uk/TestQtConcurrent.zip

                                If you want the entire MSVC solution, say so and I will zip that up and make it available.
                                David

                                JonBJ Online
                                JonBJ Online
                                JonB
                                wrote last edited by JonB
                                #15

                                @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.zip

                                If 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 .crdownload file to .zip it seems to have content....

                                1 Reply Last reply
                                0
                                • PerdrixP Offline
                                  PerdrixP Offline
                                  Perdrix
                                  wrote last edited by Perdrix
                                  #16

                                  The zip file is only 4kB... - worked for me in an incognito Chrome session on Windows, but did bitch that it wasn't https ...

                                  D.

                                  1 Reply Last reply
                                  0
                                  • PerdrixP Perdrix

                                    OK I've reduced the replication to a relatively simple case:

                                    You can find the source files here:
                                    http://www.perdrix.co.uk/TestQtConcurrent.zip

                                    If you want the entire MSVC solution, say so and I will zip that up and make it available.
                                    David

                                    JonBJ Online
                                    JonBJ Online
                                    JonB
                                    wrote last edited by JonB
                                    #17

                                    @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.h there 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.

                                    1 Reply Last reply
                                    0
                                    • PerdrixP Offline
                                      PerdrixP Offline
                                      Perdrix
                                      wrote last edited by Perdrix
                                      #18

                                      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

                                      JonBJ 1 Reply Last reply
                                      0
                                      • PerdrixP Perdrix

                                        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

                                        JonBJ Online
                                        JonBJ Online
                                        JonB
                                        wrote last edited by JonB
                                        #19

                                        @Perdrix

                                        @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 are const, but not the final zg one. Intended or not? This is the error.

                                        If you make that one const too 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 const and 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> &xValues does not pass. Either (or both) of adding in const or removing the & do pass.

                                        I don't use std::vector and 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 by QtConcurrent. As I wrote, if you can change yours to const std::vector<double>& zg or std::vector<double> zg it 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 either const int &test or int test works. So nothing to do with std::vector. You evidently cannot pass a mutable reference parameter here, I am thinking QtConcurrent::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-different

                                        QtConcurrent::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?

                                        1 Reply Last reply
                                        1
                                        • PerdrixP Offline
                                          PerdrixP Offline
                                          Perdrix
                                          wrote last edited by Perdrix
                                          #20

                                          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

                                          JonBJ 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved