From d1ea2ffa600fd2a7b14e415b68ceedba3325c5db Mon Sep 17 00:00:00 2001 From: Tim Allen Date: Sat, 12 Feb 2022 21:35:33 +1100 Subject: [PATCH] Make Color::validate_alpha() a constexpr function. We call it from a constexpr constructor, so it needs to be constexpr itself. Fixes #4544. --- src/color.cc | 7 ------- src/color.hh | 7 ++++++- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/color.cc b/src/color.cc index b355b9cf..dfe2e955 100644 --- a/src/color.cc +++ b/src/color.cc @@ -34,13 +34,6 @@ bool is_color_name(StringView color) return contains(color_names, color); } -void Color::validate_alpha() -{ - static_assert(RGB == 17); - if (a < RGB) - throw runtime_error("Colors alpha must be > 16"); -} - Color str_to_color(StringView color) { auto it = find_if(color_names, [&](const char* c){ return color == c; }); diff --git a/src/color.hh b/src/color.hh index 943678ed..85babd98 100644 --- a/src/color.hh +++ b/src/color.hh @@ -1,6 +1,7 @@ #ifndef color_hh_INCLUDED #define color_hh_INCLUDED +#include "exception.hh" #include "hash.hh" #include "meta.hh" #include "assert.hh" @@ -55,7 +56,11 @@ struct Color } private: - void validate_alpha(); + constexpr void validate_alpha() { + static_assert(RGB == 17); + if (a < RGB) + throw runtime_error("Colors alpha must be > 16"); + } }; constexpr bool operator==(Color lhs, Color rhs)