diff --git a/include/fmt/core.h b/include/fmt/core.h index f24d5c5fa749..d938bb515463 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -208,17 +208,6 @@ FMT_CONSTEXPR typename std::make_unsigned::type to_unsigned(Int value) { return static_cast::type>(value); } -// A constexpr std::char_traits::length replacement for pre-C++17. -template -FMT_CONSTEXPR size_t length(const Char *s) { - const Char *start = s; - while (*s) ++s; - return s - start; -} -#if FMT_GCC_VERSION && !defined(__arm__) -FMT_CONSTEXPR size_t length(const char *s) { return std::strlen(s); } -#endif - #if FMT_GCC_VERSION && FMT_GCC_VERSION < 405 template struct is_constructible: std::false_type {}; @@ -377,8 +366,8 @@ class basic_string_view { the size with ``std::char_traits::length``. \endrst */ - FMT_CONSTEXPR basic_string_view(const Char *s) - : data_(s), size_(internal::length(s)) {} + basic_string_view(const Char *s) + : data_(s), size_(std::char_traits::length(s)) {} /** Constructs a string reference from a ``std::basic_string`` object. */ template @@ -422,6 +411,7 @@ class basic_string_view { } friend bool operator<(basic_string_view lhs, basic_string_view rhs) { return lhs.compare(rhs) < 0; + } friend bool operator<=(basic_string_view lhs, basic_string_view rhs) { return lhs.compare(rhs) <= 0; diff --git a/test/format-test.cc b/test/format-test.cc index a30da8e944ef..f05e3acb1e85 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -2273,9 +2273,10 @@ struct test_format_string_handler { bool error = false; }; -FMT_CONSTEXPR bool parse_string(fmt::string_view s) { +template +FMT_CONSTEXPR bool parse_string(const char (&s)[N]) { test_format_string_handler h; - fmt::internal::parse_format_string(s, h); + fmt::internal::parse_format_string(fmt::string_view(s, N - 1), h); return !h.error; }