From 3e66ea93b948565b727e67ffac878ca8ed3136eb Mon Sep 17 00:00:00 2001 From: Mateusz Pusz Date: Mon, 4 Jan 2021 19:37:38 +0100 Subject: [PATCH] fix: Added constraints for `quantity_values` --- src/include/units/customization_points.h | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/include/units/customization_points.h b/src/include/units/customization_points.h index c74f0a2b..8fffaf26 100644 --- a/src/include/units/customization_points.h +++ b/src/include/units/customization_points.h @@ -22,6 +22,7 @@ #pragma once +#include #include #include @@ -54,10 +55,21 @@ inline constexpr bool treat_as_floating_point = treat_as_floating_point struct quantity_values { - static constexpr Rep zero() noexcept { return Rep(0); } - static constexpr Rep one() noexcept { return Rep(1); } - static constexpr Rep min() noexcept { return std::numeric_limits::lowest(); } - static constexpr Rep max() noexcept { return std::numeric_limits::max(); } + static constexpr Rep zero() noexcept + requires std::constructible_from + { return Rep(0); } + + static constexpr Rep one() noexcept + requires std::constructible_from + { return Rep(1); } + + static constexpr Rep min() noexcept + requires requires { { std::numeric_limits::lowest() } -> std::same_as; } + { return std::numeric_limits::lowest(); } + + static constexpr Rep max() noexcept + requires requires { { std::numeric_limits::max() } -> std::same_as; } + { return std::numeric_limits::max(); } }; /**