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(); } }; /**