On Monday, 26 October 2015 at 21:27:37 UTC, Walter Bright wrote:
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.

DirEntry is not the only source of problems. For example, the rangification also broke ae.utils.funopt, which also uses structs with an alias this'd string.

http://blog.thecybershadow.net/2014/08/05/ae-utils-funopt/
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to