refactor: explicit conversion constructors of quantity removed

This commit is contained in:
Mateusz Pusz
2023-02-14 17:21:54 +01:00
parent e98215c347
commit 81949e5ff1

View File

@@ -61,7 +61,7 @@ concept Harmonic = // exposition only
template<typename QFrom, typename QTo> template<typename QFrom, typename QTo>
concept QuantityConvertibleTo = // exposition only concept QuantityConvertibleTo = // exposition only
Quantity<QFrom> && Quantity<QTo> && explicitly_convertible_to(QFrom::quantity_spec, QTo::quantity_spec) && Quantity<QFrom> && Quantity<QTo> && implicitly_convertible_to(QFrom::quantity_spec, QTo::quantity_spec) &&
requires(QFrom q) { detail::sudo_cast<QTo>(q); } && requires(QFrom q) { detail::sudo_cast<QTo>(q); } &&
(treat_as_floating_point<typename QTo::rep> || (treat_as_floating_point<typename QTo::rep> ||
(!treat_as_floating_point<typename QFrom::rep> && Harmonic<QFrom, QTo>)); (!treat_as_floating_point<typename QFrom::rep> && Harmonic<QFrom, QTo>));
@@ -123,8 +123,7 @@ public:
quantity(quantity&&) = default; quantity(quantity&&) = default;
template<detail::QuantityConvertibleTo<quantity> Q> template<detail::QuantityConvertibleTo<quantity> Q>
constexpr explicit(!implicitly_convertible_to(Q::quantity_spec, quantity_spec)) quantity(const Q& q) : constexpr explicit(false) quantity(const Q& q) : number_(detail::sudo_cast<quantity>(q).number())
number_(detail::sudo_cast<quantity>(q).number())
{ {
} }