title: Year is out of valid range when passing pos_infin as timeout to timed_wait
body: <p>The following code reproduces the error:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include "boost/thread.hpp"
  #include "boost/date_time/posix_time/ptime.hpp"
  
  int main()
  {
      boost::condition_variable_any cv;
      boost::timed_mutex m;
  
      try {
          {
              boost::timed_mutex::scoped_timed_lock guard(m);
              cv.timed_wait(guard, boost::posix_time::ptime(
                                   boost::posix_time::pos_infin));
          }
      }
      catch(std::exception &amp; e) {
          std::cout &lt;&lt; "Error : " &lt;&lt; e.what() &lt;&lt; std::endl;
      }
      std::cout &lt;&lt; "Done" &lt;&lt; std::endl;
  
      return 0;
  }
  </code></pre>
  
  <p>On my system, using Visual Studio 2005 and Boost 1.43, this produces the following output:</p>
  
  <pre><code>Error : Year is out of valid range: 1400..10000
  Done
  </code></pre>
  
  <p>I would expect it to deadlock, waiting for the condition variable to be notified for all eternity. This does not seem to be documented anywhere, and also I would expect <code>timed_wait</code> to accept any valid <code>ptime</code>. Am I doing anything wrong? Is this a bug, or are infinite timeouts just not intended?</p>