タイムアウトを設定し、関数を実行する (C++)

void f() {
  auto self(enable_shared_from_this());
  std::future<int> future = std::async(std::launch::async, [self]() { return g(); });

  std::future_status status;
  status = future.wait_for(std::chrono::milliseconds(1000));
   if (status == std::future_status::timeout) {
   //
   } else if (status == std::future_statues::ready) {
   //
   }
}