From d4278494777abc712e897aed9aab8d799fbcbe94 Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Wed, 27 Sep 2023 17:10:20 +0200 Subject: [PATCH] refactor: `in(U)` and `force_in(U)` now return `auto` to provide better diagnostics on clang When a strong type was returned clang, instead of on a concept check, failed on `detail::make_quantity` used to provide a function return type. --- src/core/include/mp-units/quantity.h | 4 ++-- src/core/include/mp-units/quantity_point.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/include/mp-units/quantity.h b/src/core/include/mp-units/quantity.h index 498a9a32..23a1f6c3 100644 --- a/src/core/include/mp-units/quantity.h +++ b/src/core/include/mp-units/quantity.h @@ -144,14 +144,14 @@ public: // conversions template U> requires detail::QuantityConvertibleTo> - [[nodiscard]] constexpr quantity in(U) const + [[nodiscard]] constexpr Quantity auto in(U) const { return quantity{*this}; } template U> requires requires(quantity q) { value_cast(q); } - [[nodiscard]] constexpr quantity force_in(U) const + [[nodiscard]] constexpr Quantity auto force_in(U) const { return value_cast(*this); } diff --git a/src/core/include/mp-units/quantity_point.h b/src/core/include/mp-units/quantity_point.h index 74a51d92..3e158770 100644 --- a/src/core/include/mp-units/quantity_point.h +++ b/src/core/include/mp-units/quantity_point.h @@ -170,14 +170,14 @@ public: template U> requires detail::QuantityConvertibleTo> - [[nodiscard]] constexpr quantity_point in(U) const + [[nodiscard]] constexpr QuantityPoint auto in(U) const { return make_quantity_point(quantity_ref_from(PO).in(U{})); } template U> requires requires(quantity_type q) { value_cast(q); } - [[nodiscard]] constexpr quantity_point force_in(U) const + [[nodiscard]] constexpr QuantityPoint auto force_in(U) const { return make_quantity_point(quantity_ref_from(PO).force_in(U{})); }