ConstStringRange ToString specialization

master
Daniel Kolesa 2015-07-21 20:25:09 +01:00
parent aa9bdb3ec2
commit 7a0237788f
1 changed files with 10 additions and 2 deletions

View File

@ -32,13 +32,13 @@ struct StringRangeBase: InputRange<
template<typename U>
StringRangeBase(U beg, EnableIf<
IsConvertible<U, T *>::value && !IsArray<U>::value, bool
> = true): p_beg(beg), p_end((T *)beg + strlen(beg)) { printf("ptr\n"); }
> = true): p_beg(beg), p_end((T *)beg + strlen(beg)) {}
template<typename U, Size N>
StringRangeBase(U (&beg)[N], EnableIf<
IsConvertible<U *, T *>::value, bool
> = true): p_beg(beg),
p_end(beg + N - (beg[N - 1] == '\0')) { printf("arr\n"); }
p_end(beg + N - (beg[N - 1] == '\0')) {}
template<typename U, typename A>
StringRangeBase(const StringBase<U, A> &s, EnableIf<
@ -823,6 +823,14 @@ template<> struct ToString<StringRange> {
}
};
template<> struct ToString<ConstStringRange> {
using Argument = ConstStringRange;
using Result = String;
String operator()(const Argument &s) {
return String(s);
}
};
template<typename T, typename U> struct ToString<Pair<T, U>> {
using Argument = Pair<T, U>;
using Result = String;