refactor: Harmonic concept renamed to IntegralConversionFactor

This commit is contained in:
Mateusz Pusz
2023-05-16 16:58:16 +02:00
parent 9322aa25e4
commit 7bad01fd45

View File

@@ -50,9 +50,8 @@ template<typename T, typename Arg>
concept RepSafeConstructibleFrom = // exposition only
std::constructible_from<T, Arg> && (treat_as_floating_point<T> || !treat_as_floating_point<Arg>);
// UFrom ratio is an exact multiple of UTo
template<auto UFrom, auto UTo>
concept Harmonic = // exposition only
concept IntegralConversionFactor = // exposition only
Unit<decltype(UFrom)> && Unit<decltype(UTo)> &&
is_integral(get_canonical_unit(UFrom).mag / get_canonical_unit(UTo).mag);
@@ -61,7 +60,7 @@ concept QuantityConvertibleTo = // exposition only
Quantity<QFrom> && Quantity<QTo> && implicitly_convertible(QFrom::quantity_spec, QTo::quantity_spec) &&
convertible(QFrom::unit, QTo::unit) && requires(QFrom q) { detail::sudo_cast<QTo>(q); } &&
(treat_as_floating_point<typename QTo::rep> ||
(!treat_as_floating_point<typename QFrom::rep> && Harmonic<QFrom::unit, QTo::unit>));
(!treat_as_floating_point<typename QFrom::rep> && IntegralConversionFactor<QFrom::unit, QTo::unit>));
template<quantity_character Ch, typename Func, typename T, typename U>
concept InvokeResultOf = std::regular_invocable<Func, T, U> && RepresentationOf<std::invoke_result_t<Func, T, U>, Ch>;