From 7cbfe1904ce32e4d956d7a819ec6d851f51bc5ec Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Tue, 28 Jul 2020 18:58:57 +0200 Subject: Use concepts instead of SFINAE where possible --- cxxformat.hpp | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/cxxformat.hpp b/cxxformat.hpp index 61a800e..47c0cd7 100644 --- a/cxxformat.hpp +++ b/cxxformat.hpp @@ -19,6 +19,7 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN #include #include #include +#include namespace format { @@ -36,20 +37,20 @@ struct ImplicitConversion } }; -template -struct FormatConvert && std::is_integral_v>> : ImplicitConversion {}; +template +struct FormatConvert : ImplicitConversion {}; -template -struct FormatConvert && std::is_integral_v && (sizeof(From) < sizeof(std::intmax_t))>> : ImplicitConversion {}; +template +struct FormatConvert> : ImplicitConversion {}; -template -struct FormatConvert && std::is_integral_v>> : ImplicitConversion {}; +template +struct FormatConvert : ImplicitConversion {}; -template -struct FormatConvert>> : ImplicitConversion {}; +template String> +struct FormatConvert : ImplicitConversion {}; -template -struct FormatConvert && !std::is_integral_v>> : ImplicitConversion {}; +template +struct FormatConvert : ImplicitConversion {}; template struct FormatConvert && !std::is_array_v>>> : ImplicitConversion {}; @@ -75,17 +76,17 @@ struct SimpleAutoConversion } }; -template -struct AutoConversion && std::is_unsigned_v>> : SimpleAutoConversion<'u', From> {}; +template +struct AutoConversion : SimpleAutoConversion<'u', From> {}; -template -struct AutoConversion && std::is_signed_v>> : SimpleAutoConversion<'d', From> {}; +template +struct AutoConversion : SimpleAutoConversion<'d', From> {}; -template -struct AutoConversion && !std::is_integral_v>> : SimpleAutoConversion<'G', From> {}; +template +struct AutoConversion : SimpleAutoConversion<'G', From> {}; -template -struct AutoConversion>> : SimpleAutoConversion<'s', From> {}; +template From> +struct AutoConversion : SimpleAutoConversion<'s', From> {}; template<> struct AutoConversion : SimpleAutoConversion<'c', const char> {}; -- cgit v1.2.3-54-g00ecf