On Tue, Jun 22, 2010 at 08:38, Jonathan M Davis
<jmdavisProg@gmail.com> wrote:
Jonathan M Davis wrote:
> Okay. If you call until like so
>
> str.until('\"')
>
> you get a Until!(pred,string,char). I want to turn that into a string.
> array() doesn't seem to do the trick right now. It used to work, but now
> it gives me
>
> main.d(47): Error: template std.array.array(Range) if (isForwardRange!
> (Range)) does not match any function template declaration
> main.d(47): Error: template std.array.array(Range) if (isForwardRange!
> (Range)) cannot deduce template function from argument types !()(Until!
> (pred,string,char))
>I should say that array() used to work if you used to!string on the result,
but in either case, it won't compile for me now with DMD 2.047 (it did with
DMD 2.046) if I feed the result of until() to array(). Maybe it's a bug, or
maybe I've just been doing the conversion in the wrong way in the first
place, but I don't know how to do it now.
I got this error also while installing 2.047. I think the new definition of a forward range asks for a .save() member. And I guess some ranges where not converted. std.range.repeat is one, like cycle. It seems like Until is another.
Maybe for repeat/cycle that was a conscious decision? I'll file a bug anyway.
Philippe