title: std::thread constructor with no parameter
body: <p>According to <a href="http://en.cppreference.com/w/cpp/thread/thread/thread" rel="noreferrer">cppreference.com</a>, the
  <code>std::thread</code> constructor with no parameter means:</p>
  
  <blockquote>
    <p>Creates new thread object which does not represent a thread.</p>
  </blockquote>
  
  <p>My questions are:</p>
  
  <ol>
  <li>Why do we need this constructor? And if we create a <code>thread</code> using this constructor, how can we "assign" a thread function later?</li>
  <li>Why don't we have a "run(function_address)" method so that when constructed with no parameter, we can specify a function to "run" for that <code>thread</code>.</li>
  <li>Or, we can construct a <code>thread</code> with a callable parameter (function, functors, etc.) but call a "run()" method to actually execute the thread later. Why is <code>std::thread</code> not designed in this way?</li>
  </ol>