refactor: chrono types now convert to quantity kinds

This commit is contained in:
Mateusz Pusz
2023-04-04 14:28:38 +02:00
parent db2edfb539
commit 1a940399c9
2 changed files with 5 additions and 5 deletions

View File

@@ -60,7 +60,7 @@ template<typename Period>
template<typename Rep, typename Period>
struct quantity_like_traits<std::chrono::duration<Rep, Period>> {
static constexpr auto reference = isq::duration[detail::time_unit_from_chrono_period<Period>()];
static constexpr auto reference = detail::time_unit_from_chrono_period<Period>();
using rep = Rep;
[[nodiscard]] static constexpr rep number(const std::chrono::duration<Rep, Period>& q) { return q.count(); }
};
@@ -75,7 +75,7 @@ inline constexpr chrono_point_origin_<C> chrono_point_origin;
template<typename C, typename Rep, typename Period>
struct quantity_point_like_traits<std::chrono::time_point<C, std::chrono::duration<Rep, Period>>> {
static constexpr auto reference = isq::time[detail::time_unit_from_chrono_period<Period>()];
static constexpr auto reference = detail::time_unit_from_chrono_period<Period>();
static constexpr auto point_origin = chrono_point_origin<C>;
using rep = Rep;
[[nodiscard]] static constexpr auto relative(const std::chrono::time_point<C, std::chrono::duration<Rep, Period>>& qp)

View File

@@ -37,7 +37,7 @@ using sys_days =
std::chrono::time_point<std::chrono::system_clock,
std::chrono::duration<long, std::ratio_multiply<std::ratio<24>, std::chrono::hours::period>>>;
template<Unit auto U, typename C, typename Rep = double>
using time_point = quantity_point<isq::time[U], chrono_point_origin<C>, Rep>;
using time_point = quantity_point<U, chrono_point_origin<C>, Rep>;
static_assert(QuantityLike<std::chrono::seconds>);
static_assert(QuantityPointLike<sys_seconds>);
@@ -82,8 +82,8 @@ static_assert(!std::convertible_to<sys_seconds, time_point<si::day, std::chrono:
// CTAD
static_assert(is_of_type<quantity{1s}, quantity<isq::time[si::second], std::chrono::seconds::rep>>);
static_assert(is_of_type<quantity{1h}, quantity<isq::time[si::hour], std::chrono::hours::rep>>);
static_assert(is_of_type<quantity{1s}, quantity<si::second, std::chrono::seconds::rep>>);
static_assert(is_of_type<quantity{1h}, quantity<si::hour, std::chrono::hours::rep>>);
static_assert(
is_of_type<quantity_point{sys_seconds{1s}}, time_point<si::second, std::chrono::system_clock, sys_seconds::rep>>);
static_assert(is_of_type<quantity_point{sys_days{sys_days::duration{1}}},