title: How to convert std::future<T> to std::future<void>?
body: <p>I have a situation where I have a <code>std::future&lt;some_type&gt;</code> resulting from a call to API A, but need to supply API B with a <code>std::future&lt;void&gt;</code>:</p>
  
  <pre><code>std::future&lt;some_type&gt; api_a();
  
  void api_b(std::future&lt;void&gt;&amp; depend_on_this_event);
  </code></pre>
  
  <p>In the absence of proposed functionality such as <code>.then()</code> or <code>when_all()</code>, is there any efficient way to throw away the value attached to a <code>std::future&lt;T&gt;</code> and be left only with the underlying <code>std::future&lt;void&gt;</code> representing the event's completion?</p>
  
  <p>Something like the following could work but would be potentially inefficient:</p>
  
  <pre><code>auto f = api_a();
  f.wait();
  auto void_f = std::async(std::launch::defer, []{});
  api_b(void_f);
  </code></pre>