From 14d8d96b3c0251404281881fa3cc7355c2b74d32 Mon Sep 17 00:00:00 2001 From: Chip Hogg Date: Tue, 4 Jan 2022 20:06:41 -0500 Subject: [PATCH] Replace `static_assert` with template parameter constraints --- src/core/include/units/magnitude.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/include/units/magnitude.h b/src/core/include/units/magnitude.h index 0cbfd4d5..aa3ed580 100644 --- a/src/core/include/units/magnitude.h +++ b/src/core/include/units/magnitude.h @@ -103,8 +103,10 @@ namespace detail { // Helpers to perform prime factorization at compile time. template + requires requires { N > 0; } struct prime_factorization; template + requires requires { N > 0; } using prime_factorization_t = typename prime_factorization::type; // A way to check whether a number is prime at compile time. @@ -115,9 +117,8 @@ constexpr bool is_prime(std::intmax_t n); * @brief A template to represent prime number bases. */ template -struct prime_base : std::integral_constant { - static_assert(detail::is_prime(N)); -}; + requires requires { detail::is_prime(N); } +struct prime_base : std::integral_constant {}; /** * @brief Make a Magnitude that is a rational number. @@ -320,9 +321,8 @@ struct prime_factorization<1> { using type = magnitude<>; }; // Specialization for the prime factorization of larger numbers (recursive case). template + requires requires { N > 0; } struct prime_factorization { - static_assert(N > 1, "Can only factor positive integers."); - static constexpr std::intmax_t first_base = find_first_factor(N); static constexpr std::intmax_t first_power = multiplicity(first_base, N); static constexpr std::intmax_t remainder = remove_power(first_base, first_power, N);