diff --git a/src/core/include/mp-units/quantity.h b/src/core/include/mp-units/quantity.h index f35ff1cd..ccf8b80b 100644 --- a/src/core/include/mp-units/quantity.h +++ b/src/core/include/mp-units/quantity.h @@ -163,8 +163,8 @@ public: } template - requires detail::QuantityConvertibleTo{}, Rep>> - [[nodiscard]] constexpr quantity<::mp_units::reference{}, Rep> in(U) const + requires detail::QuantityConvertibleTo> + [[nodiscard]] constexpr quantity in(U) const { return quantity{*this}; } diff --git a/test/unit_test/static/quantity_test.cpp b/test/unit_test/static/quantity_test.cpp index 0b49a559..0fdc13b3 100644 --- a/test/unit_test/static/quantity_test.cpp +++ b/test/unit_test/static/quantity_test.cpp @@ -200,6 +200,10 @@ static_assert(quantity(1500 * m).numerical_value() == 1.5); // converting to a different unit /////////////////////////////////// +static_assert(is_of_type<(2. * km).in(m), quantity>); +static_assert(is_of_type>); +static_assert(is_of_type>); + static_assert(quantity(2. * km).in(km).numerical_value() == 2.); static_assert(quantity(2. * km).in(m).numerical_value() == 2000.); static_assert(quantity(2000. * m).in(km).numerical_value() == 2.);