std::thread constructor with no parameter
<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>