refactor: quantity_like types refactored

This commit is contained in:
Mateusz Pusz committed 2022-12-23 17:58:57 +01:00
1 parent a62c388d05
commit c056f4535c
3 files changed
+12 -15

No files matched your search

+6 -8
View File
@@ -42,6 +42,9 @@ namespace detail {
template<typename T>
concept quantity_one = quantity_of<T, dimensionless[one]>;
template<quantity_like Q>
using quantity_like_type = quantity<quantity_like_traits<Q>::reference, typename quantity_like_traits<Q>::rep>;
} // namespace detail
template<typename T, typename Arg>
@@ -64,10 +67,6 @@ template<quantity_character Ch, typename Func, typename T, typename U>
concept invoke_result_of_ =
std::regular_invocable<Func, T, U> && RepresentationOf<std::invoke_result_t<Func, T, U>, Ch>;
template<quantity_like Q>
using quantity_like_type = quantity<reference<quantity_like_traits<Q>::dimension, quantity_like_traits<Q>::unit>{},
typename quantity_like_traits<Q>::rep>;
/**
* @brief A quantity
*
@@ -131,8 +130,8 @@ public:
}
template<quantity_like Q>
requires quantity_convertible_to_<quantity_like_type<Q>, quantity>
constexpr explicit quantity(const Q& q) : quantity(quantity_like_type<Q>(quantity_like_traits<Q>::number(q)))
requires quantity_convertible_to_<detail::quantity_like_type<Q>, quantity>
constexpr explicit quantity(const Q& q): quantity(detail::quantity_like_type<Q>(quantity_like_traits<Q>::number(q)))
{
}
@@ -452,8 +451,7 @@ explicit(false) quantity(Rep&&) -> quantity<R, Rep>;
#endif
template<quantity_like Q>
explicit quantity(Q) -> quantity<reference<quantity_like_traits<Q>::dimension, quantity_like_traits<Q>::unit>{},
typename quantity_like_traits<Q>::rep>;
explicit quantity(Q) -> quantity<quantity_like_traits<Q>::reference, typename quantity_like_traits<Q>::rep>;
// non-member binary operators
template<Quantity Q1, Quantity Q2>