From 299032a7e8bcdb3491c88260afa25df8d8e1e469 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 24 May 2023 22:42:11 +0200 Subject: [PATCH] refactor: conversion from `quantity` to `quantity_point` is now explicit --- example/currency.cpp | 2 +- example/unmanned_aerial_vehicle.cpp | 12 ++++++------ src/core/include/mp_units/quantity_point.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/example/currency.cpp b/example/currency.cpp index c1527b6e..a0c97234 100644 --- a/example/currency.cpp +++ b/example/currency.cpp @@ -78,7 +78,7 @@ quantity exchange_to(quantity q) template auto To, ReferenceOf auto From, auto PO, typename Rep> quantity_point exchange_to(quantity_point q) { - return static_cast(exchange_rate() * q.absolute().number()) * To; + return quantity_point{static_cast(exchange_rate() * q.absolute().number()) * To}; } int main() diff --git a/example/unmanned_aerial_vehicle.cpp b/example/unmanned_aerial_vehicle.cpp index f8dee6d6..ef5b03ab 100644 --- a/example/unmanned_aerial_vehicle.cpp +++ b/example/unmanned_aerial_vehicle.cpp @@ -97,7 +97,7 @@ hae_altitude to_hae(msl_altitude msl, position pos) { const auto geoid_undulation = isq::height(GeographicLibWhatsMyOffset(pos.lat.number_in(si::degree), pos.lon.number_in(si::degree)) * si::metre); - return msl.absolute() - geoid_undulation; + return hae_altitude{msl.absolute() - geoid_undulation}; } @@ -129,7 +129,7 @@ struct STD_FMT::formatter : formatter // **** UAV **** class unmanned_aerial_vehicle { - msl_altitude current_ = 0 * si::metre; + msl_altitude current_{0 * si::metre}; msl_altitude launch_ = current_; public: void take_off(msl_altitude alt) { launch_ = alt; } @@ -138,7 +138,7 @@ public: void current(msl_altitude alt) { current_ = alt; } msl_altitude current() const { return current_; } - hal_altitude hal() const { return current_ - launch_; } + hal_altitude hal() const { return hal_altitude{current_ - launch_}; } }; @@ -148,11 +148,11 @@ int main() using namespace mp_units::international::unit_symbols; unmanned_aerial_vehicle uav; - uav.take_off(6'000 * ft); - uav.current(10'000 * ft); + uav.take_off(msl_altitude{6'000 * ft}); + uav.current(msl_altitude{10'000 * ft}); std::cout << STD_FMT::format("hal = {}\n", uav.hal()); - msl_altitude ground_level = 123 * m; + msl_altitude ground_level{123 * m}; std::cout << STD_FMT::format("agl = {}\n", uav.current() - ground_level); struct waypoint { diff --git a/src/core/include/mp_units/quantity_point.h b/src/core/include/mp_units/quantity_point.h index d9077e04..aac226eb 100644 --- a/src/core/include/mp_units/quantity_point.h +++ b/src/core/include/mp_units/quantity_point.h @@ -102,7 +102,7 @@ public: template requires std::constructible_from - constexpr explicit(!std::convertible_to) quantity_point(T&& v) : q_(std::forward(v)) + constexpr explicit quantity_point(T&& v) : q_(std::forward(v)) { }