title: Issue with std::numeric_limits<T>::min() with float/double values
body: <p>While writing some code to ensure user input is valid I came across an issue with  <code>std::numeric_limits&lt;T&gt;::min();</code> where T is a floating point type i.e double/float etc. </p>
  
  <p>Using <code>-std::numeric_limits&lt;double&gt;::max();</code> allows me to get the real minimum value but you would expect <code>std::numeric_limits&lt;double&gt;::min();</code> to return that. </p>
  
  <p>Why does <code>std::numeric_limits&lt;double&gt;::min();</code> not return the smallest possible value of these types and instead force us to use <code>std::numeric_limits::lowest</code> or <code>-std::numeric_limits&lt;double&gt;::max();</code>?</p>