title: Moving an argument into a std::thread?
body: <p>Please consider the following code:</p>
  
  <pre><code>void h(M m2) 
  { 
      ...
  }
  
  int main()
  {
    while (true) {
      M m1 = ...;
      std::thread t(h, std::move(m1));
      t.detach();
    }
  }
  </code></pre>
  
  <p>Is it guaranteed that <code>m2</code> is properly <code>move</code>-d constructed from <code>m1</code> before <code>m1</code> is destroyed?  Or is there a race?</p>