fix ToString
This commit is contained in:
parent
5f083f2b67
commit
02bc84dbb5
|
@ -535,12 +535,6 @@ struct ToString<T, EnableIf<detail::ToStringTest<T>::value>> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T> struct ToString<const T, EnableIf<
|
|
||||||
!detail::IterableTest<T>::value &&
|
|
||||||
!detail::ToStringTest<T>::value &&
|
|
||||||
!IsScalar<T>::value
|
|
||||||
>>: ToString<T> {};
|
|
||||||
|
|
||||||
namespace detail {
|
namespace detail {
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void str_printf(Vector<char> *s, const char *fmt, T v) {
|
void str_printf(Vector<char> *s, const char *fmt, T v) {
|
||||||
|
@ -623,6 +617,14 @@ template<> struct ToString<const char *> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<> struct ToString<char *> {
|
||||||
|
using Argument = char *;
|
||||||
|
using Result = String;
|
||||||
|
String operator()(char *s) {
|
||||||
|
return String(s);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template<> struct ToString<String> {
|
template<> struct ToString<String> {
|
||||||
using Argument = String;
|
using Argument = String;
|
||||||
using Result = String;
|
using Result = String;
|
||||||
|
@ -644,9 +646,9 @@ template<typename T, typename U> struct ToString<Pair<T, U>> {
|
||||||
using Result = String;
|
using Result = String;
|
||||||
String operator()(const Argument &v) {
|
String operator()(const Argument &v) {
|
||||||
String ret("{");
|
String ret("{");
|
||||||
ret += ToString<T>()(v.first);
|
ret += ToString<RemoveReference<RemoveCv<T>>>()(v.first);
|
||||||
ret += ", ";
|
ret += ", ";
|
||||||
ret += ToString<U>()(v.second);
|
ret += ToString<RemoveReference<RemoveCv<U>>>()(v.second);
|
||||||
ret += "}";
|
ret += "}";
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -654,7 +656,7 @@ template<typename T, typename U> struct ToString<Pair<T, U>> {
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
typename ToString<T>::Result to_string(const T &v) {
|
typename ToString<T>::Result to_string(const T &v) {
|
||||||
return ToString<T>()(v);
|
return ToString<RemoveReference<RemoveCv<T>>>()(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
Loading…
Reference in a new issue