¿Cómo comprobar si una tarea std :: async ha finalizado?

En mi aplicación de gráficos quiero generar un lote de mallas en otro hilo. Por eso llamo asincronamente a la función miembro usandostd::async.

task = async(launch::async, &Class::Meshing, this, Data(...));

En mi ciclo de actualización, trato de verificar si el hilo está listo. En caso afirmativo, enviaré la malla a la tarjeta de video e iniciaré la siguiente secuencia. Si no, me saltaré estas operaciones.

#include <future>
using namespace std;

class Class
{
public:
    void Update()
    {
        if(task.finished()) // this method does not exist
        {
            Data data = task.get();
            // ...
            task = async(launch::async, &Class::Meshing, this, Data(/* ... */));
        }
    }

private:
    struct Data
    {
        // ...
    };
    future<Data> task;
    Data Meshing(Data data)
    {
        // ...
    }
};

¿Cómo puedo verificar si el subproceso de asincronía terminó sin apilarse en la función de actualización?

Respuestas a la pregunta(2)

Su respuesta a la pregunta