From aa2b6bc208785c1d8ced8451478b14433c762896 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 20 Mar 2026 16:00:14 +0100 Subject: kstd/format: fix type decay for c strings --- libs/kstd/include/kstd/bits/format/args.hpp | 5 +++-- libs/kstd/include/kstd/bits/format/formatter.hpp | 7 ++++++- libs/kstd/include/kstd/bits/format/formatter/cstring.hpp | 6 ------ libs/kstd/include/kstd/bits/format/string.hpp | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) (limited to 'libs') diff --git a/libs/kstd/include/kstd/bits/format/args.hpp b/libs/kstd/include/kstd/bits/format/args.hpp index 008cc03..d1586ac 100644 --- a/libs/kstd/include/kstd/bits/format/args.hpp +++ b/libs/kstd/include/kstd/bits/format/args.hpp @@ -36,7 +36,7 @@ namespace kstd template constexpr auto determine_arg_type() -> arg_type { - using decay_type = std::remove_cvref_t>; + using decay_type = std::remove_cvref_t; if constexpr (std::same_as) { return arg_type::boolean; @@ -57,7 +57,8 @@ namespace kstd { return arg_type::string_view; } - else if constexpr (std::same_as || std::same_as) + else if constexpr (std::same_as, char *> || + std::same_as, char const *>) { return arg_type::c_string; } diff --git a/libs/kstd/include/kstd/bits/format/formatter.hpp b/libs/kstd/include/kstd/bits/format/formatter.hpp index bff5f55..f391c8e 100644 --- a/libs/kstd/include/kstd/bits/format/formatter.hpp +++ b/libs/kstd/include/kstd/bits/format/formatter.hpp @@ -7,7 +7,12 @@ namespace kstd { template - struct formatter; + struct formatter + { + formatter() = delete; + formatter(formatter const &) = delete; + auto operator=(formatter const &) -> formatter & = delete; + }; } // namespace kstd diff --git a/libs/kstd/include/kstd/bits/format/formatter/cstring.hpp b/libs/kstd/include/kstd/bits/format/formatter/cstring.hpp index bf52f2e..9afb974 100644 --- a/libs/kstd/include/kstd/bits/format/formatter/cstring.hpp +++ b/libs/kstd/include/kstd/bits/format/formatter/cstring.hpp @@ -5,7 +5,6 @@ #include "../formatter.hpp" #include "string_view.hpp" -#include #include namespace kstd @@ -25,11 +24,6 @@ namespace kstd { }; - template - struct formatter : formatter // NOLINT - { - }; - } // namespace kstd #endif \ No newline at end of file diff --git a/libs/kstd/include/kstd/bits/format/string.hpp b/libs/kstd/include/kstd/bits/format/string.hpp index edeaed1..40282e4 100644 --- a/libs/kstd/include/kstd/bits/format/string.hpp +++ b/libs/kstd/include/kstd/bits/format/string.hpp @@ -28,6 +28,7 @@ namespace kstd if (current_index == target_index && !found) { using decay_type = std::remove_cvref_t; + static_assert(std::is_default_constructible_v>, "Missing formatter specialization."); auto fmt = formatter{}; auto it = fmt.parse(context); -- cgit v1.2.3