45 static Deadline
FromDuration(
const std::chrono::duration<Rep, Period>& incoming_duration)
noexcept {
46 using IncomingDuration = std::chrono::duration<Rep, Period>;
48 if (incoming_duration.count() < 0) {
52 const auto now = TimePoint::clock::now();
53 constexpr auto max_now = TimePoint::clock::time_point::max();
62 static_assert(std::is_constructible_v<Duration, IncomingDuration>);
67 if (incoming_duration > std::chrono::duration_cast<IncomingDuration>(Duration::max())) {
68 OnDurationOverflow(std::chrono::duration_cast<std::chrono::duration<
double>>(incoming_duration));
73 UASSERT(max_now - now >= Duration{incoming_duration});
75 return Deadline(now + Duration{incoming_duration});