From f09185da6563e50f9ccaed1958bf391074633be3 Mon Sep 17 00:00:00 2001 From: Ben Deane Date: Thu, 22 Jan 2026 11:57:22 -0700 Subject: [PATCH] Add `constexpr` to argument `value` constructors (#4659) --- include/fmt/base.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/fmt/base.h b/include/fmt/base.h index 37eb589e..58a1689f 100644 --- a/include/fmt/base.h +++ b/include/fmt/base.h @@ -2253,20 +2253,20 @@ template class value { string.data = sv.data(); string.size = sv.size(); } - FMT_INLINE value(void* x FMT_BUILTIN) : pointer(x) {} - FMT_INLINE value(const void* x FMT_BUILTIN) : pointer(x) {} - FMT_INLINE value(volatile void* x FMT_BUILTIN) + constexpr FMT_INLINE value(void* x FMT_BUILTIN) : pointer(x) {} + constexpr FMT_INLINE value(const void* x FMT_BUILTIN) : pointer(x) {} + constexpr FMT_INLINE value(volatile void* x FMT_BUILTIN) : pointer(const_cast(x)) {} - FMT_INLINE value(const volatile void* x FMT_BUILTIN) + constexpr FMT_INLINE value(const volatile void* x FMT_BUILTIN) : pointer(const_cast(x)) {} - FMT_INLINE value(nullptr_t) : pointer(nullptr) {} + constexpr FMT_INLINE value(nullptr_t) : pointer(nullptr) {} template ::value || std::is_member_pointer::value) && !std::is_void::type>::value)> - value(const T&) { + constexpr value(const T&) { // Formatting of arbitrary pointers is disallowed. If you want to format a // pointer cast it to `void*` or `const void*`. In particular, this forbids // formatting of `[const] volatile char*` printed as bool by iostreams. @@ -2275,12 +2275,12 @@ template class value { } template ::value)> - value(const T& x) : value(format_as(x)) {} + constexpr value(const T& x) : value(format_as(x)) {} template ::value)> - value(const T& x) : value(formatter::format_as(x)) {} + constexpr value(const T& x) : value(formatter::format_as(x)) {} template ::value)> - value(const T& named_arg) : value(named_arg.value) {} + constexpr value(const T& named_arg) : value(named_arg.value) {} template ::value || !FMT_BUILTIN_TYPES)>