feat: quantity point-like support

This commit is contained in:
Johel Ernesto Guerrero Peña authored and Mateusz Pusz committed 2021-02-17 19:40:52 +01:00
1 parent 86584dbfe2
commit 8d6d43b32d
11 files changed
+110 -2

No files matched your search

+12
View File
@@ -28,6 +28,10 @@
namespace units {
template<QuantityPointLike QP>
using quantity_point_like_type = quantity_point<typename quantity_point_like_traits<QP>::dimension,
typename quantity_point_like_traits<QP>::unit, typename quantity_point_like_traits<QP>::rep>;
/**
* @brief A quantity point
*
@@ -63,6 +67,11 @@ public:
requires std::is_constructible_v<quantity_type, Q>
constexpr explicit quantity_point(const Q& q) : q_{q} {}
template<QuantityPointLike QP>
constexpr explicit quantity_point(const QP& qp)
requires std::is_constructible_v<quantity_type, decltype(quantity_point_like_traits<QP>::relative(qp))>
: q_{quantity_point_like_traits<QP>::relative(qp)} {}
template<QuantityPoint QP2>
requires std::is_convertible_v<typename QP2::quantity_type, quantity_type>
constexpr quantity_point(const QP2& qp) : q_{qp.relative()} {}
@@ -182,6 +191,9 @@ template<QuantityLike Q>
quantity_point(Q) -> quantity_point<typename quantity_like_traits<Q>::dimension,
typename quantity_like_traits<Q>::unit, typename quantity_like_traits<Q>::rep>;
template<QuantityPointLike QP>
explicit quantity_point(QP) -> quantity_point_like_type<QP>;
namespace detail {
template<typename D, typename U, typename Rep>