diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2020-07-28 18:58:25 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2020-07-28 18:58:25 +0200 |
| commit | bb1e80ad52378f0b9e6f07b6067aa9acc8a80733 (patch) | |
| tree | c96f2f7670da3417b3a49e520b3d1dbf2d5611a8 | |
| parent | fc817cd011250d968c3183b650845245bf459f6a (diff) | |
| download | cxxformat-bb1e80ad52378f0b9e6f07b6067aa9acc8a80733.tar.gz cxxformat-bb1e80ad52378f0b9e6f07b6067aa9acc8a80733.zip | |
Replace custom remove_cvref_t with std::remove_cvref_t
| -rw-r--r-- | cxxformat.hpp | 18 | ||||
| -rw-r--r-- | main.cpp | 4 |
2 files changed, 8 insertions, 14 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 @@ -4,7 +4,7 @@ #include <iostream> template<size_t N, typename T> -struct format::FormatConvert<std::string, T[N], std::enable_if_t<!std::is_same_v<format::detail::remove_cvref_t<T>, char>>> +struct format::FormatConvert<std::string, T[N], std::enable_if_t<!std::is_same_v<std::remove_cvref_t<T>, char>>> { template<size_t _N> static std::string accessConvert(const T *from) @@ -38,7 +38,7 @@ template<size_t N, typename T> struct format::AutoConversion<std::array<T, N>> : format::SimpleAutoConversion<'s', const std::array<T, N> &> {}; template<size_t N, typename T> -struct format::AutoConversion<T[N], std::enable_if_t<!std::is_same_v<format::detail::remove_cvref_t<T>, char>>> : format::SimpleAutoConversion<'s', const T(&)[N]> {}; +struct format::AutoConversion<T[N], std::enable_if_t<!std::is_same_v<std::remove_cvref_t<T>, char>>> : format::SimpleAutoConversion<'s', const T(&)[N]> {}; int main(int, char *[]) { |
