|
|
@ -73,9 +73,9 @@
|
|
|
|
#endif // FMT_MODULE
|
|
|
|
#endif // FMT_MODULE
|
|
|
|
|
|
|
|
|
|
|
|
#if (defined(__GNUC__) && __GNUC__ < 5)
|
|
|
|
#if (defined(__GNUC__) && __GNUC__ < 5)
|
|
|
|
# define OPERATOR_LITERAL(suffix) operator"" suffix
|
|
|
|
# define OPERATOR_LITERAL(suffix) operator"" _suffix
|
|
|
|
#else
|
|
|
|
#else
|
|
|
|
# define OPERATOR_LITERAL(suffix) operator""suffix
|
|
|
|
# define OPERATOR_LITERAL(suffix) operator""_suffix
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(FMT_USE_NONTYPE_TEMPLATE_ARGS)
|
|
|
|
#if defined(FMT_USE_NONTYPE_TEMPLATE_ARGS)
|
|
|
@ -3999,7 +3999,7 @@ template <typename T, typename Char = char> struct nested_formatter {
|
|
|
|
|
|
|
|
|
|
|
|
inline namespace literals {
|
|
|
|
inline namespace literals {
|
|
|
|
#if FMT_USE_NONTYPE_TEMPLATE_ARGS
|
|
|
|
#if FMT_USE_NONTYPE_TEMPLATE_ARGS
|
|
|
|
template <detail::fixed_string S> constexpr auto OPERATOR_LITERAL(_a)() {
|
|
|
|
template <detail::fixed_string S> constexpr auto OPERATOR_LITERAL(a)() {
|
|
|
|
using char_t = remove_cvref_t<decltype(*S.data)>;
|
|
|
|
using char_t = remove_cvref_t<decltype(*S.data)>;
|
|
|
|
return detail::udl_arg<char_t, sizeof(S.data) / sizeof(char_t), S>();
|
|
|
|
return detail::udl_arg<char_t, sizeof(S.data) / sizeof(char_t), S>();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -4012,7 +4012,7 @@ template <detail::fixed_string S> constexpr auto OPERATOR_LITERAL(_a)() {
|
|
|
|
* using namespace fmt::literals;
|
|
|
|
* using namespace fmt::literals;
|
|
|
|
* fmt::print("The answer is {answer}.", "answer"_a=42);
|
|
|
|
* fmt::print("The answer is {answer}.", "answer"_a=42);
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
constexpr auto OPERATOR_LITERAL(_a)(const char* s, size_t) -> detail::udl_arg<char> {
|
|
|
|
constexpr auto OPERATOR_LITERAL(a)(const char* s, size_t) -> detail::udl_arg<char> {
|
|
|
|
return {s};
|
|
|
|
return {s};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif // FMT_USE_NONTYPE_TEMPLATE_ARGS
|
|
|
|
#endif // FMT_USE_NONTYPE_TEMPLATE_ARGS
|
|
|
|