foreach for ranges?
Kapps
opantm2+spam at gmail.com
Tue Jul 17 22:19:59 PDT 2012
On Wednesday, 18 July 2012 at 04:54:51 UTC, Jonathan M Davis
wrote:
> On Wednesday, July 18, 2012 06:27:28 Mike L. wrote:
>> Thanks for the reply. Not sure how I missed it there.
>> Interesting
>> that the compiler has to be made aware of a concept that I had
>> thought was only supposed to be part of phobos. Would it be
>> possible to implement it in std.range using the new UFCs?
>
> You can do
>
> for(; !range.empty; range.popFront())
> {
> auto e = range.front;
> }
>
> without the compiler doing anything at all. But if you want
>
> for(e; range)
> {}
>
> you need a way in the language for the compiler to translate
> that into the
> above. UFCS has nothing to do with it. All UFCS does is take
> a.b(c, d) and
> make it b(a, c, d).
>
> - Jonathan M Davi
If UFCS worked on operators, you would be able to make ranges
without any compiler support.
int opApply(T)(T Range) if(isInputRange!T) {
// Stuff.
}
More information about the Digitalmars-d-learn
mailing list