如何在获得其未来价值后重用 boost::promise 对象?

How to reuse boost::promise object after getting its future value?

void sss(boost::promise<std::string>& res)
{
   res.set_value("hi");
}

void yyy(boost::promise<std::string>& res)
{
  res.set_value("hello");
}

int main()
{
  boost::thread th;
  boost::promise<std::string> a;
  th = boost::thread(sss, boost::ref(a));
  th.join();
  std::cout << a.get_future().get() << std::endl;
  th = boost::thread(yyy, boost::ref(a));
  th.join();
  std::cout << a.get_future().get() << std::endl;
}`

我收到了承诺已经满足的错误。如何复用同一个promise对象?

将其替换为未使用的承诺:

a = boost::promise<std::string>();