title: How can std::nextafter() in C++11 produce smaller values than std::numeric_limits::min?
body: <p>I just noticed that <code>std::nextafter(0, 1)</code> on my system seems to produce a value greater than 0 and lower than <code>std::numeric_limits::min()</code>.</p>
  
  <p>How is this possible? I thought <code>min()</code> returns the smallest possible number greater than 0.</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  int main(int argc, char *argv[])
  {
      double next = std::nextafter(0.0, 1.0);
      double min = std::numeric_limits&lt;double&gt;::min();
      std::cout &lt;&lt; "next: " &lt;&lt; next &lt;&lt; "\nmin:  " &lt;&lt; min &lt;&lt; "\nnext&lt;min: " &lt;&lt; (next &lt; min) &lt;&lt; "\nnext&gt;0:   " &lt;&lt; (next &gt; 0.0) &lt;&lt; std::endl;
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>next: 4.94066e-324
  min:  2.22507e-308
  next&lt;min: 1
  next&gt;0:   1
  </code></pre>
  
  <p>My compiler is MinGW 5.3.0 32bit.</p>