Make Color::validate_alpha() a constexpr function.

We call it from a constexpr constructor, so it needs to be constexpr itself.

Fixes #4544.
This commit is contained in:
Tim Allen 2022-02-12 21:35:33 +11:00
parent 0b29fcf32a
commit d1ea2ffa60
2 changed files with 6 additions and 8 deletions

View File

@ -34,13 +34,6 @@ bool is_color_name(StringView color)
return contains(color_names, 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) Color str_to_color(StringView color)
{ {
auto it = find_if(color_names, [&](const char* c){ return color == c; }); auto it = find_if(color_names, [&](const char* c){ return color == c; });

View File

@ -1,6 +1,7 @@
#ifndef color_hh_INCLUDED #ifndef color_hh_INCLUDED
#define color_hh_INCLUDED #define color_hh_INCLUDED
#include "exception.hh"
#include "hash.hh" #include "hash.hh"
#include "meta.hh" #include "meta.hh"
#include "assert.hh" #include "assert.hh"
@ -55,7 +56,11 @@ struct Color
} }
private: 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) constexpr bool operator==(Color lhs, Color rhs)