Skip to content

Commit 03b6e9b

Browse files
committed
Remove StringLiteral(const char*) ctor to fix ambiguity on Clang/GCC
The const char* constructor was ambiguous with const char(&)[N] for string literals like "". Replace its only usage in transform_case.hpp with an intermediate std::array copy.
1 parent fcad677 commit 03b6e9b

2 files changed

Lines changed: 3 additions & 5 deletions

File tree

include/rfl/internal/StringLiteral.hpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ struct StringLiteral {
2424
std::copy_n(_str, N, std::data(arr_));
2525
}
2626

27-
explicit constexpr StringLiteral(const char* _data) {
28-
std::copy_n(_data, N, std::data(arr_));
29-
}
30-
3127

3228
/// Returns the value as a string.
3329
std::string str() const { return std::string(string_view()); }

include/rfl/internal/transform_case.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ consteval auto transform_camel_case() {
4646
}
4747

4848
if constexpr (!src.empty() && is_upper(src[0])) {
49-
return StringLiteral<len>(result.data() + 1);
49+
auto trimmed = std::array<char, len>{};
50+
std::copy_n(result.data() + 1, len - 1, trimmed.data());
51+
return StringLiteral<len>(trimmed);
5052
}
5153
else {
5254
return StringLiteral<len + 1>(result);

0 commit comments

Comments
 (0)