Skip to content

Commit ba0f48f

Browse files
committed
Fixed detection of Char * addends as eligible for sys_string addition
1 parent 0296b51 commit ba0f48f

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

lib/inc/sys_string/sys_string.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,14 @@ namespace sysstr
6262
};
6363

6464
template<class T, class Storage>
65-
concept addable = sys_string_or_char<T, Storage> || (
66-
std::ranges::forward_range<T> &&
67-
has_utf_encoding<std::ranges::range_value_t<T>>
68-
);
65+
concept addable = sys_string_or_char<T, Storage> ||
66+
(
67+
std::ranges::forward_range<T> &&
68+
has_utf_encoding<std::ranges::range_value_t<T>>
69+
) || (
70+
std::is_pointer_v<std::decay_t<T>> &&
71+
has_utf_encoding<std::remove_const_t<std::remove_pointer_t<std::decay_t<T>>>>
72+
);
6973
}
7074

7175
namespace sysstr::util

test/test_general.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,9 @@ TEST_CASE( "Addition" ) {
740740
CHECK((("a"sv + S("b")) + (S("💾") + "💿"s)) + ("🜇"s + S("")) == S("ab💾💿🜇⏰"));
741741
sys_string result = S("a") + U'b' + "cd" + "ef"s + u"gh"sv + U"ij" + std::vector{'k', 'l'};
742742
CHECK(result == S("abcdefghijkl"));
743+
744+
const char * foo = "abc";
745+
CHECK(S("x") + foo == "xabc");
743746
}
744747

745748
TEST_CASE( "c_str" ) {

0 commit comments

Comments
 (0)