From ed8b28c76514d939b8e8f394f4e936b9c8847fe5 Mon Sep 17 00:00:00 2001 From: Omar Boukli-Hacene Date: Tue, 18 Jul 2023 18:57:23 +0200 Subject: [PATCH] fix: Remove `constexpr` where invalid in C++20 --- include/forfun/palindrome.hpp | 11 ++++------- include/forfun/palindromic_number.hpp | 2 +- .../project_euler/p0001_multiples_of_3_or_5.hpp | 5 +++-- src/palindromic_number.cpp | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/include/forfun/palindrome.hpp b/include/forfun/palindrome.hpp index b759276..176d652 100644 --- a/include/forfun/palindrome.hpp +++ b/include/forfun/palindrome.hpp @@ -33,8 +33,7 @@ is_palindrome(std::string_view const& s) noexcept { return true; } -[[nodiscard]] constexpr inline bool -is_palindrome_ci(std::string_view const& s) noexcept { +[[nodiscard]] inline bool is_palindrome_ci(std::string_view const& s) noexcept { auto const end{s.length() - 1}; auto const mid{s.length() / 2}; @@ -68,8 +67,7 @@ is_palindrome(std::string_view const& s) noexcept { return true; } -[[nodiscard]] constexpr inline bool -is_palindrome_ci(std::string_view const& s) noexcept { +[[nodiscard]] inline bool is_palindrome_ci(std::string_view const& s) noexcept { auto upper{s.cend() - 1}; auto const mid{s.cbegin() + (s.length() / 2)}; @@ -98,15 +96,14 @@ is_palindrome(std::string_view const& s) noexcept { } namespace { -[[nodiscard]] constexpr inline bool +[[nodiscard]] inline bool equal_case_insensitive(char const a, char const b) noexcept { return std::tolower(static_cast(a)) == std::tolower(static_cast(b)); } } // namespace -[[nodiscard]] constexpr inline bool -is_palindrome_ci(std::string_view const& s) noexcept { +[[nodiscard]] inline bool is_palindrome_ci(std::string_view const& s) noexcept { return std::equal( s.cbegin(), std::next(s.cbegin(), s.size() / 2), s.crbegin(), equal_case_insensitive); diff --git a/include/forfun/palindromic_number.hpp b/include/forfun/palindromic_number.hpp index daa48be..a6efb31 100644 --- a/include/forfun/palindromic_number.hpp +++ b/include/forfun/palindromic_number.hpp @@ -10,6 +10,6 @@ #ifndef FORFUN_PALINDROMIC_NUMBER_HPP_ #define FORFUN_PALINDROMIC_NUMBER_HPP_ -[[nodiscard]] bool is_palindrome(int const n) noexcept; +[[nodiscard]] /* constexpr */ bool is_palindrome(int const n) noexcept; #endif // FORFUN_PALINDROMIC_NUMBER_HPP_ diff --git a/include/forfun/project_euler/p0001_multiples_of_3_or_5.hpp b/include/forfun/project_euler/p0001_multiples_of_3_or_5.hpp index dbba9a3..ca7680e 100644 --- a/include/forfun/project_euler/p0001_multiples_of_3_or_5.hpp +++ b/include/forfun/project_euler/p0001_multiples_of_3_or_5.hpp @@ -19,14 +19,15 @@ #include namespace { -[[nodiscard]] inline constexpr int sum_2x(int const n, int const q) noexcept { +[[nodiscard]] inline /* constexpr */ int +sum_2x(int const n, int const q) noexcept { auto const d = std::div(n, q); return d.quot * (q + n - d.rem); } } // namespace -[[nodiscard]] constexpr int find_sum_mult_three_five(int n) noexcept { +[[nodiscard]] /* constexpr */ int find_sum_mult_three_five(int n) noexcept { --n; return (sum_2x(n, 3) + sum_2x(n, 5) - sum_2x(n, 15)) / 2; diff --git a/src/palindromic_number.cpp b/src/palindromic_number.cpp index bccbdf6..3a3019a 100644 --- a/src/palindromic_number.cpp +++ b/src/palindromic_number.cpp @@ -8,7 +8,7 @@ #include -[[nodiscard]] bool is_palindrome(int const n) noexcept { +[[nodiscard]] /* constexpr */ bool is_palindrome(int const n) noexcept { if (n < 0) { return false; }