On 10/26/2015 9:27 AM, Dmitry Olshansky via phobos wrote:
Agreed. That is my opinion as well, however luck of any attention from you and Walter led to the point where we need (a) and (b) to work right now and we hacked it (somewhat of speaking for the community here, correct me if I'm wrong).

My recommendation was to remove the alias this in DirEntry that tried to turn it into a string. A DirEntry is not a wrapper for a string, in particular, it does not support range primitives, which is why the string functions failed when changed to have InputRange parameters. Adding range primitives to DirEntry would cause other weird problems, because DirEntry is fundamentally not a range (a range 'consumes' its data via popFront() which makes no sense for DirEntry).

Yes, that breaks:

    DirEntry direntry;
    remove(direntry);

which must be rewritten as:

    DirEntry direntry;
    remove(direntry.name);

and we're not supposed to break existing code. But the alternative, which is redoing every template that accepts an InputRange, seems an awfully heavy burden. Even if we do this change pervasively in Phobos, how does that help anyone else who uses InputRanges?

Tl,dr: the alias this in DirEntry is an abusive bad practice, and should never have happened.
_______________________________________________
phobos mailing list
phobos@puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to