template <class ToDuration, class Rep, class Period>
constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
Remarks: Эта функция не должна участвовать в разрешении перегрузки, если ToDuration она не является специализацией duration.
Returns: Да CF будет ratio_divide<Period, typename ToDuration::period>и CR будет common_type< typename ToDuration::rep, Rep, intmax_t>::type.
Если CF::num == 1 и CF::den == 1, возвращает
ToDuration(static_cast<typename ToDuration::rep>(d.count()))
в противном случае, если CF::num != 1 и CF::den == 1, возвращает
ToDuration(static_cast<typename ToDuration::rep>( static_cast<CR>(d.count()) * static_cast<CR>(CF::num)))
в противном случае, если CF::num == 1 и CF::den != 1, возвращает
ToDuration(static_cast<typename ToDuration::rep>( static_cast<CR>(d.count()) / static_cast<CR>(CF::den)))
в противном случае возвращается
ToDuration(static_cast<typename ToDuration::rep>( static_cast<CR>(d.count()) * static_cast<CR>(CF::num) / static_cast<CR>(CF::den)))
[ Note: Эта функция не использует никаких неявных преобразований; все преобразования выполняются с помощью static_cast. Он избегает умножений и делений, когда во время компиляции известно, что один или несколько аргументов равны 1. Промежуточные вычисления выполняются в самом широком представлении и преобразуются в целевое представление только на последнем шаге. ] — end note
template <class ToDuration, class Rep, class Period>
constexpr ToDuration floor(const duration<Rep, Period>& d);
Remarks: Эта функция не должна участвовать в разрешении перегрузки, если ToDuration она не является специализацией duration.
template <class ToDuration, class Rep, class Period>
constexpr ToDuration ceil(const duration<Rep, Period>& d);
Remarks: Эта функция не должна участвовать в разрешении перегрузки, если ToDuration она не является специализацией duration.
template <class ToDuration, class Rep, class Period>
constexpr ToDuration round(const duration<Rep, Period>& d);
Remarks: Эта функция не должна участвовать в разрешении перегрузки, если ToDuration она не является специализацией durationи не treat_as_floating_point_v<typename ToDuration::rep> является false.