tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
ceil.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_CHRONO_CEIL_HPP
4#define TETL_CHRONO_CEIL_HPP
5
9
10namespace etl::chrono {
11
13template <typename To, typename Rep, typename Period>
14 requires(detail::is_duration_v<To>)
15[[nodiscard]] constexpr auto ceil(duration<Rep, Period> const& d)
17{
18 auto const t{duration_cast<To>(d)};
19 if (t < d) {
20 return To{t.count() + static_cast<typename To::rep>(1)};
21 }
22 return t;
23}
24
26template <typename To, typename Clock, typename Duration>
27 requires(detail::is_duration_v<To>)
28[[nodiscard]] constexpr auto ceil(time_point<Clock, Duration> const& tp) -> time_point<Clock, To>
29{
31}
32
33} // namespace etl::chrono
34
35#endif // TETL_CHRONO_CEIL_HPP
constexpr auto duration_cast(duration< Rep, Period > const &duration) noexcept(is_arithmetic_v< Rep > and is_arithmetic_v< typename ToDur::rep >) -> ToDur
Converts a duration to a duration of different type ToDur.
Definition duration_cast.hpp:77
constexpr auto ceil(duration< Rep, Period > const &d) noexcept(is_arithmetic_v< Rep > and is_arithmetic_v< typename To::rep >) -> To
Definition ceil.hpp:15
Definition abs.hpp:11
constexpr bool is_arithmetic_v
Definition is_arithmetic.hpp:21
Class template etl::chrono::duration represents a time interval.
Definition duration.hpp:31
Class template time_point represents a point in time. It is implemented as if it stores a value of ty...
Definition time_point.hpp:21
constexpr auto time_since_epoch() const noexcept -> duration
Returns a duration representing the amount of time between *this and the clock's epoch.
Definition time_point.hpp:61