mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-04 04:44:27 +02:00
test: compile quantity_point_kind_test.cpp
This commit is contained in:
committed by
Mateusz Pusz
parent
0b961dc71c
commit
6a43e10fe6
@@ -346,10 +346,10 @@ template<Kind ToK, Unit ToU, typename K, 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)
|
||||
requires (is_specialization_of<CastSpec, quantity_point_kind> &&
|
||||
requires { quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative()); }) ||
|
||||
(PointKind<CastSpec> && UnitOf<U, typename CastSpec::dimension>) ||
|
||||
requires { quantity_kind_cast<CastSpec>(qpk.relative()); }
|
||||
requires requires { requires is_specialization_of<CastSpec, quantity_point_kind>;
|
||||
requires requires { quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative()); }; } ||
|
||||
requires { requires PointKind<CastSpec> && UnitOf<U, typename CastSpec::dimension>; } ||
|
||||
requires { requires requires { quantity_kind_cast<CastSpec>(qpk.relative()); }; }
|
||||
{
|
||||
if constexpr (is_specialization_of<CastSpec, quantity_point_kind>)
|
||||
return CastSpec(quantity_kind_cast<typename CastSpec::quantity_kind_type>(qpk.relative()));
|
||||
|
@@ -141,27 +141,27 @@ public:
|
||||
|
||||
template<QuantityKind QK>
|
||||
[[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);
|
||||
}
|
||||
|
||||
template<QuantityKind QK>
|
||||
[[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());
|
||||
}
|
||||
|
||||
template<QuantityKind QK>
|
||||
[[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);
|
||||
}
|
||||
|
||||
[[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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user