format: do not use udl_{arg,formatter} return types when UDL is not in use

The udl_{arg,formatter} structs are only defined when
FMT_USE_USER_DEFINED_LITERALS is set, so don't try to define things that
return that struct when it's not defined.
This commit is contained in:
Jason A. Donenfeld 2021-06-22 14:34:33 +02:00 committed by Victor Zverovich
parent 3bd806f12f
commit c9a10631cb

View File

@ -2730,6 +2730,8 @@ extern template auto snprintf_float<long double>(long double value,
#endif // FMT_HEADER_ONLY #endif // FMT_HEADER_ONLY
FMT_END_DETAIL_NAMESPACE FMT_END_DETAIL_NAMESPACE
#if FMT_USE_USER_DEFINED_LITERALS
inline namespace literals { inline namespace literals {
/** /**
\rst \rst
@ -2741,18 +2743,18 @@ inline namespace literals {
fmt::print("Elapsed time: {s:.2f} seconds", "s"_a=1.23); fmt::print("Elapsed time: {s:.2f} seconds", "s"_a=1.23);
\endrst \endrst
*/ */
#if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS # if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS
template <detail_exported::fixed_string Str> template <detail_exported::fixed_string Str>
constexpr auto operator""_a() constexpr auto operator""_a()
-> detail::udl_arg<remove_cvref_t<decltype(Str.data[0])>, -> detail::udl_arg<remove_cvref_t<decltype(Str.data[0])>,
sizeof(Str.data) / sizeof(decltype(Str.data[0])), Str> { sizeof(Str.data) / sizeof(decltype(Str.data[0])), Str> {
return {}; return {};
} }
#else # else
constexpr auto operator"" _a(const char* s, size_t) -> detail::udl_arg<char> { constexpr auto operator"" _a(const char* s, size_t) -> detail::udl_arg<char> {
return {s}; return {s};
} }
#endif # endif
/** /**
\rst \rst
@ -2769,6 +2771,7 @@ constexpr auto operator"" _format(const char* s, size_t n)
return {{s, n}}; return {{s, n}};
} }
} // namespace literals } // namespace literals
#endif // FMT_USE_USER_DEFINED_LITERALS
template <typename Locale, FMT_ENABLE_IF(detail::is_locale<Locale>::value)> template <typename Locale, FMT_ENABLE_IF(detail::is_locale<Locale>::value)>
inline auto vformat(const Locale& loc, string_view fmt, format_args args) inline auto vformat(const Locale& loc, string_view fmt, format_args args)