digitalmars.D.bugs - [Issue 13256] New: Update std.range.ElementType to support all
- via Digitalmars-d-bugs (29/29) Aug 04 2014 https://issues.dlang.org/show_bug.cgi?id=13256
https://issues.dlang.org/show_bug.cgi?id=13256 Issue ID: 13256 Summary: Update std.range.ElementType to support all strings uniformly Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: enhancement Priority: P1 Component: Phobos Assignee: nobody puremagic.com Reporter: maidenphil hotmail.com K so I played around and noticed that the type of std.array.front for strings and wstrings is dchar, but immutable(dchar) for dstrings. It turns out that std.array.front makes a distinction when it's a narrow string (as per std.traits.isNarrowString) and dstring is not one. I think the distinction is made to avoid decoding when unnecessary. However, that distinction results in some lack of consistency. Here are my propositions: 1 - std.array.front returns dchar for all strings 2 - Consider reviewing std.array so that it does not make a distinction whether it's a string or not. Indexing in a string produces an immutable(char). A range wrapper around a string located in an array module should produce the same type in my opinion. In the case somebody needs to decode a string, provide a range wrapper in std.utf. Thx! --
Aug 04 2014