title: Destructor of a future in async C++11
body: <p>Should not a compiler call the destructor of the future <code>future</code> right after the <code>main</code> finishes, that is, should not be the function <code>f()</code> called anyway? (gcc 4.7.2 doesn't do that).</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;thread&gt;
  #include &lt;future&gt;
  
  using namespace std;
  
  void f() {
      cout &lt;&lt; "thread...\n";
  }
  
  int main() {
      auto future = async(&amp;f);
      cout &lt;&lt; "I am main\n";
  }
  </code></pre>
  
  <p><strong>edit</strong>: I get <strong>only</strong> <code>Hello from main</code>. The text <code>thread...</code> is NOT printed at all.</p>
  
  <p><strong>edit 2</strong>: Does the destructor of a future call <code>wait()</code>??</p>