mirror of
https://github.com/mpusz/mp-units.git
synced 2025-08-04 12:54:25 +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>
|
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()));
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user