On Tue, Jun 22, 2010 at 08:38, Jonathan M Davis <jmdavisp...@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. http://d.puremagic.com/issues/show_bug.cgi?id=4362 http://d.puremagic.com/issues/show_bug.cgi?id=4363 Philippe