Iros
 
Loading...
Searching...
No Matches
duration_cast.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/meta/core.h"
5
6namespace di::chrono {
7namespace detail {
8 template<concepts::InstanceOf<Duration> To>
10 template<typename Rep, math::detail::IsRatio Period>
11 constexpr auto operator()(Duration<Rep, Period> const& from) const -> To {
12 constexpr auto conversion_factor = math::RatioDivide<Period, typename To::Period>::rational;
13
14 auto count = static_cast<imax>(from.count());
15 count *= conversion_factor.numerator();
16 count /= conversion_factor.denominator();
17
18 using Rep2 = To::Representation;
19 return To(static_cast<Rep2>(count));
20 }
21 };
22}
23
24template<concepts::InstanceOf<Duration> To>
26}
27
28namespace di {
30}
Definition duration_forward_declaration.h:7
Definition duration_cast.h:7
Definition duration.h:9
constexpr auto duration_cast
Definition duration_cast.h:25
intmax_t imax
Definition integers.h:40
Definition zstring_parser.h:9
constexpr auto count
Definition count.h:37
Definition duration_cast.h:9
constexpr auto operator()(Duration< Rep, Period > const &from) const -> To
Definition duration_cast.h:11
static constexpr Rational< ratio_intmax_t > rational
Definition ratio.h:36