diff options
Diffstat (limited to 'cxxformat.hpp')
| -rw-r--r-- | cxxformat.hpp | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/cxxformat.hpp b/cxxformat.hpp index 46d18b4..4598327 100644 --- a/cxxformat.hpp +++ b/cxxformat.hpp @@ -92,12 +92,6 @@ struct AutoConversion<char> : SimpleAutoConversion<'c', const char> {}; namespace detail { - template<typename T> - struct remove_cvref { using type = std::remove_cv_t<std::remove_reference_t<T>>; }; - - template<typename T> - using remove_cvref_t = typename remove_cvref<T>::type; - template<typename T, bool Ok = false> struct StointHelper { @@ -165,11 +159,11 @@ namespace detail }; template<typename To, typename From, bool allowFallback> - struct FormatConvertHelper<To, From, allowFallback, std::enable_if_t<!std::is_same_v<To, From> && std::is_same_v<remove_cvref_t<decltype(FormatConvert<To, remove_cvref_t<From>>::convert(std::declval<From>()))>, remove_cvref_t<To>>>> + struct FormatConvertHelper<To, From, allowFallback, std::enable_if_t<!std::is_same_v<To, From> && std::is_same_v<std::remove_cvref_t<decltype(FormatConvert<To, std::remove_cvref_t<From>>::convert(std::declval<From>()))>, std::remove_cvref_t<To>>>> { static constexpr To convert(const From &from) { - return FormatConvert<To, remove_cvref_t<From>>::convert(from); + return FormatConvert<To, std::remove_cvref_t<From>>::convert(from); } }; @@ -208,7 +202,7 @@ namespace detail { if constexpr (!allowFallback) { - if constexpr(!std::is_same_v<char, decltype(AutoConversion<remove_cvref_t<From>>::conversion())>) + if constexpr(!std::is_same_v<char, decltype(AutoConversion<std::remove_cvref_t<From>>::conversion())>) { if constexpr (std::is_pointer_v<From>) { @@ -224,7 +218,7 @@ namespace detail } } } - return AutoConversion<remove_cvref_t<From>>::conversion(); + return AutoConversion<std::remove_cvref_t<From>>::conversion(); } catch (const FormatException &) { @@ -363,7 +357,7 @@ namespace detail case 's': { - const auto& string = convert<string_or_string_view<remove_cvref_t<Arg>>>(std::forward<Arg>(arg), "string", argumentIndex); + const auto& string = convert<string_or_string_view<std::remove_cvref_t<Arg>>>(std::forward<Arg>(arg), "string", argumentIndex); precision = precision ? std::min(*precision, string.size()) : string.size(); return continueFormatting(false, string.data()); } @@ -643,7 +637,7 @@ namespace detail else if constexpr (conversion == 'p') return substr<0, i>(fmt).s + strprintf(makeDirective<fmt, conversion, i, iAfterPrecision, 0>().s, convert<const void *, false>(std::forward<Arg>(arg), "pointer", argumentIndex)) + format_s<substr<iAfterPrecision + 1>(fmt), 0, argumentIndex + 1>(std::forward<Args>(args)...); else if constexpr (conversion == 's') { - const auto& string = convert<string_or_string_view<remove_cvref_t<Arg>>, false>(std::forward<Arg>(arg), "string", argumentIndex); + const auto& string = convert<string_or_string_view<std::remove_cvref_t<Arg>>, false>(std::forward<Arg>(arg), "string", argumentIndex); return substr<0, i>(fmt).s + strprintf("%.*s", determineStringPrecision<havePrecision, fmt, iAfterFieldWidth, iAfterPrecision>(string), string.data()) + format_s<substr<iAfterPrecision + 1>(fmt), 0, argumentIndex + 1>(std::forward<Args>(args)...); } else |
