diff --git a/octa/string.hh b/octa/string.hh index 2b6b092..fb3d871 100644 --- a/octa/string.hh +++ b/octa/string.hh @@ -535,12 +535,6 @@ struct ToString::value>> { } }; -template struct ToString::value && - !detail::ToStringTest::value && - !IsScalar::value ->>: ToString {}; - namespace detail { template void str_printf(Vector *s, const char *fmt, T v) { @@ -623,6 +617,14 @@ template<> struct ToString { } }; +template<> struct ToString { + using Argument = char *; + using Result = String; + String operator()(char *s) { + return String(s); + } +}; + template<> struct ToString { using Argument = String; using Result = String; @@ -644,9 +646,9 @@ template struct ToString> { using Result = String; String operator()(const Argument &v) { String ret("{"); - ret += ToString()(v.first); + ret += ToString>>()(v.first); ret += ", "; - ret += ToString()(v.second); + ret += ToString>>()(v.second); ret += "}"; return ret; } @@ -654,7 +656,7 @@ template struct ToString> { template typename ToString::Result to_string(const T &v) { - return ToString()(v); + return ToString>>()(v); } template