From df6827edb9de346cb279e1974975beb205786d64 Mon Sep 17 00:00:00 2001 From: Elliot Haisley <35050275+Apache-HB@users.noreply.github.com> Date: Sun, 4 Apr 2021 23:30:23 -0400 Subject: [PATCH] fix #2210 --- include/fmt/core.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/include/fmt/core.h b/include/fmt/core.h index 7d2ba5ac..73a3b0d3 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -98,6 +98,13 @@ # define FMT_CONSTEXPR_DECL #endif +// C++17's char_traits::length() is constexpr. +#if __cplusplus >= 201703L +# define FMT_CONSTEXPR_CHAR_TRAITS_LENGTH FMT_CONSTEXPR +#else +# define FMT_CONSTEXPR_CHAR_TRAITS_LENGTH +#endif + #ifndef FMT_OVERRIDE # if FMT_HAS_FEATURE(cxx_override_control) || \ (FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900 @@ -392,11 +399,8 @@ template class basic_string_view { the size with ``std::char_traits::length``. \endrst */ -#if __cplusplus >= 201703L // C++17's char_traits::length() is constexpr. - FMT_CONSTEXPR -#endif - FMT_INLINE basic_string_view(const Char* s) : data_(s) { - if (std::is_same::value && !detail::is_constant_evaluated()) + FMT_CONSTEXPR_CHAR_TRAITS_LENGTH FMT_INLINE basic_string_view(const Char* s) : data_(s) { + if FMT_CONSTEXPR_CHAR_TRAITS_LENGTH (std::is_same::value && !detail::is_constant_evaluated()) size_ = std::strlen(reinterpret_cast(s)); else size_ = std::char_traits::length(s);