https://issues.dlang.org/show_bug.cgi?id=13829
Issue ID: 13829 Summary: std.uni.byCodePoint for strings has length Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: Phobos Assignee: nob...@puremagic.com Reporter: schue...@gmx.net import std.uni; static assert(__traits(compiles, "é".byCodePoint.length)); pragma(msg, typeof("é".byCodePoint)); // => string The problem is that `byCodePoint(w?string.init)` returns its argument (string/wstring) which of course defines `length`, instead of a wrapper that doesn't. The reason is once again auto-decoding. In std/uni.d(6644): Range byCodePoint(Range)(Range range) if(isInputRange!Range && is(Unqual!(ElementType!Range) == dchar)) { return range; } `Unqual!(ElementType!string)` is of course `dchar`. Brought up in this discussion: http://forum.dlang.org/thread/ovzcetxbrdblpmyiz...@forum.dlang.org#post-ovzcetxbrdblpmyizdjr:40forum.dlang.org --