summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2020-07-28 18:58:25 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2020-07-28 18:58:25 +0200
commitbb1e80ad52378f0b9e6f07b6067aa9acc8a80733 (patch)
treec96f2f7670da3417b3a49e520b3d1dbf2d5611a8
parentfc817cd011250d968c3183b650845245bf459f6a (diff)
downloadcxxformat-bb1e80ad52378f0b9e6f07b6067aa9acc8a80733.tar.gz
cxxformat-bb1e80ad52378f0b9e6f07b6067aa9acc8a80733.zip
Replace custom remove_cvref_t with std::remove_cvref_t
-rw-r--r--cxxformat.hpp18
-rw-r--r--main.cpp4
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
diff --git a/main.cpp b/main.cpp
index 62c55de..2431b73 100644
--- a/main.cpp
+++ b/main.cpp
@@ -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 *[])
{