test: compile quantity_point_kind_test.cpp

This commit is contained in:
Johel Ernesto Guerrero Peña
2021-02-21 17:16:57 -04:00
committed by Mateusz Pusz
parent 0b961dc71c
commit 6a43e10fe6
2 changed files with 8 additions and 8 deletions

View File

@@ -346,10 +346,10 @@ template<Kind ToK, Unit ToU, typename K, typename U, typename Rep>
*/ */
template<typename CastSpec, typename PK, typename U, typename Rep> template<typename CastSpec, typename PK, typename U, typename Rep>
[[nodiscard]] constexpr QuantityPointKind auto quantity_point_kind_cast(const quantity_point_kind<PK, U, Rep>& qpk) [[nodiscard]] constexpr QuantityPointKind auto quantity_point_kind_cast(const quantity_point_kind<PK, U, Rep>& qpk)
requires (is_specialization_of<CastSpec, quantity_point_kind> && requires requires { requires is_specialization_of<CastSpec, quantity_point_kind>;
requires { quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative()); }) || requires requires { quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative()); }; } ||
(PointKind<CastSpec> && UnitOf<U, typename CastSpec::dimension>) || requires { requires PointKind<CastSpec> && UnitOf<U, typename CastSpec::dimension>; } ||
requires { quantity_kind_cast<CastSpec>(qpk.relative()); } requires { requires requires { quantity_kind_cast<CastSpec>(qpk.relative()); }; }
{ {
if constexpr (is_specialization_of<CastSpec, quantity_point_kind>) if constexpr (is_specialization_of<CastSpec, quantity_point_kind>)
return CastSpec(quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative())); return CastSpec(quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative()));

View File

@@ -141,27 +141,27 @@ public:
template<QuantityKind QK> template<QuantityKind QK>
[[nodiscard]] friend constexpr QuantityPointKind auto operator+(const quantity_point_kind& lhs, const QK& rhs) [[nodiscard]] friend constexpr QuantityPointKind auto operator+(const quantity_point_kind& lhs, const QK& rhs)
requires requires { lhs.relative() + rhs; } requires requires(quantity_kind_type qk) { qk + rhs; }
{ {
return units::quantity_point_kind(lhs.relative() + rhs); return units::quantity_point_kind(lhs.relative() + rhs);
} }
template<QuantityKind QK> template<QuantityKind QK>
[[nodiscard]] friend constexpr QuantityPointKind auto operator+(const QK& lhs, const quantity_point_kind& rhs) [[nodiscard]] friend constexpr QuantityPointKind auto operator+(const QK& lhs, const quantity_point_kind& rhs)
requires requires { lhs + rhs.relative(); } requires requires(quantity_kind_type qk) { lhs + qk; }
{ {
return units::quantity_point_kind(lhs + rhs.relative()); return units::quantity_point_kind(lhs + rhs.relative());
} }
template<QuantityKind QK> template<QuantityKind QK>
[[nodiscard]] friend constexpr QuantityPointKind auto operator-(const quantity_point_kind& lhs, const QK& rhs) [[nodiscard]] friend constexpr QuantityPointKind auto operator-(const quantity_point_kind& lhs, const QK& rhs)
requires requires { lhs.relative() - rhs; } requires requires(quantity_kind_type qk) { qk - rhs; }
{ {
return units::quantity_point_kind(lhs.relative() - rhs); return units::quantity_point_kind(lhs.relative() - rhs);
} }
[[nodiscard]] friend constexpr QuantityKind auto operator-(const quantity_point_kind& lhs, const quantity_point_kind& rhs) [[nodiscard]] friend constexpr QuantityKind auto operator-(const quantity_point_kind& lhs, const quantity_point_kind& rhs)
requires requires { lhs.relative() - rhs.relative(); } requires requires(quantity_kind_type qk) { qk - qk; }
{ {
return lhs.relative() - rhs.relative(); return lhs.relative() - rhs.relative();
} }