From 22003065cac9077d158e4066e274209a9aca6d3f Mon Sep 17 00:00:00 2001 From: Alcaro Date: Fri, 11 Apr 2025 02:11:16 +0200 Subject: [PATCH 1/3] Cast ranges to the character type --- include/ctre/atoms_characters.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ctre/atoms_characters.hpp b/include/ctre/atoms_characters.hpp index 349718db..f3bff1c2 100644 --- a/include/ctre/atoms_characters.hpp +++ b/include/ctre/atoms_characters.hpp @@ -79,7 +79,7 @@ template struct char_range { } } } - return (value >= A) && (value <= B); + return (value >= (CharT)A) && (value <= (CharT)B); } }; using word_chars = set, char_range<'a','z'>, char_range<'0','9'>, character<'_'> >; From 8f102332a9175c774bf3be17ec0c8e299eb51bae Mon Sep 17 00:00:00 2001 From: Alcaro Date: Fri, 11 Apr 2025 02:31:54 +0200 Subject: [PATCH 2/3] Make unsigned, not signed --- include/ctre/atoms_characters.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ctre/atoms_characters.hpp b/include/ctre/atoms_characters.hpp index f3bff1c2..f7ff0247 100644 --- a/include/ctre/atoms_characters.hpp +++ b/include/ctre/atoms_characters.hpp @@ -79,7 +79,7 @@ template struct char_range { } } } - return (value >= (CharT)A) && (value <= (CharT)B); + return ((std::make_unsigned_t)value >= A) && ((std::make_unsigned_t)value <= B); } }; using word_chars = set, char_range<'a','z'>, char_range<'0','9'>, character<'_'> >; From b4b68f5a617aa61cfb6805fc358b42a92f21e424 Mon Sep 17 00:00:00 2001 From: Alcaro Date: Fri, 11 Apr 2025 02:38:22 +0200 Subject: [PATCH 3/3] Fix sign error on single chars too --- include/ctre/atoms_characters.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/ctre/atoms_characters.hpp b/include/ctre/atoms_characters.hpp index f7ff0247..d7000674 100644 --- a/include/ctre/atoms_characters.hpp +++ b/include/ctre/atoms_characters.hpp @@ -40,7 +40,7 @@ template struct character { } } } - return value == V; + return (std::make_unsigned_t)value == V; } };