| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | //// wait_traits.hpp// ~~~~~~~~~~~~~~~//// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//#ifndef BOOST_ASIO_WAIT_TRAITS_HPP#define BOOST_ASIO_WAIT_TRAITS_HPP#if defined(_MSC_VER) && (_MSC_VER >= 1200)# pragma once#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)#include <boost/asio/detail/push_options.hpp>namespace boost {namespace asio {/// Wait traits suitable for use with the basic_waitable_timer class template.template <typename Clock>struct wait_traits{  /// Convert a clock duration into a duration used for waiting.  /**   * @returns @c d.   */  static typename Clock::duration to_wait_duration(      const typename Clock::duration& d)  {    return d;  }  /// Convert a clock duration into a duration used for waiting.  /**   * @returns @c d.   */  static typename Clock::duration to_wait_duration(      const typename Clock::time_point& t)  {    typename Clock::time_point now = Clock::now();    if (now + (Clock::duration::max)() < t)      return (Clock::duration::max)();    if (now + (Clock::duration::min)() > t)      return (Clock::duration::min)();    return t - now;  }};} // namespace asio} // namespace boost#include <boost/asio/detail/pop_options.hpp>#endif // BOOST_ASIO_WAIT_TRAITS_HPP
 |