result.get()で処理を待って、値を返してくれる
#include <future>
...
auto result = std::async(std::launch::async, [] { return long_hogehoge(); });
// 非同期中の処理なにか
std::cout << result.get() << std::endl;処理中かどうか判定をいれてその間アニメーションさせるとかさせるなら
auto status = result->wait_for(std::chrono::milliseconds(0)); bool isGet = status == std::future_status::ready;
上記のように書くことで isGet 変数にスレッドが終わっていれば true, 終わっていなければ falseが入ります。