| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | //  boost/chrono/round.hpp  ------------------------------------------------------------////  (C) Copyright Howard Hinnant//  Copyright 2011 Vicente J. Botet Escriba//  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)//  See http://www.boost.org/libs/chrono for documentation.#ifndef BOOST_CHRONO_ROUND_HPP#define BOOST_CHRONO_ROUND_HPP#include <boost/chrono/duration.hpp>#include <boost/chrono/duration.hpp>//#include <boost/chrono/typeof/boost/chrono/chrono.hpp>namespace boost{  namespace chrono  {    /**     * rounds to nearest, to even on tie     */    template <class To, class Rep, class Period>    To round(const duration<Rep, Period>& d)    {        typedef typename common_type<To, duration<Rep, Period> >::type  result_type;        result_type diff0;        result_type diff1;        To t0 = duration_cast<To>(d);        To t1 = t0;        if (t0>d) {          --t1;          diff0 = t0 - d;          diff1 = d - t1;        } else {          ++t1;          diff0 = d - t0;          diff1 = t1 - d;        }        if (diff0 == diff1)        {            if (t0.count() & 1)                return t1;            return t0;        }        else if (diff0 < diff1)            return t0;        return t1;    }  } // namespace chrono} // namespace boost#endif
 |