Why doesn't this work in D2?

Steven Schveighoffer schveiguy at yahoo.com
Mon Jun 28 05:35:23 PDT 2010


On Mon, 28 Jun 2010 08:14:12 -0400, Philippe Sigaud  
<philippe.sigaud at gmail.com> wrote:

> On Mon, Jun 28, 2010 at 10:56, Jacob Carlborg <doob at me.com> wrote:
>
> Something to keep in mind: as of 2.04x (.045? maybe), the way UTF-8 /  
> UTF-32
> is managed was changed. "asd" is an array of immutable(dchar), not
> imutable(char). At least DMD tells me that its element type is 'dchar'.

No, that is not true.  It's still an array of immutable(char).  The  
compiler still sees it as an array of immutable(char).  However, std.range  
forces the element type of char[] and wchar[] to be bidirectional ranges  
of dchar.  The tests such as isRandomAccessRange and ElementType are  
fudged to say string is *not* a random access range, and its element type  
is dchar.  This was one of Andrei's changes because without such  
shoehorning, std.algorithm could possible start shearing off strings that  
weren't valid.

Whether that was the right decision remains to be seen.  I personally  
would rather have special ranges that do those things.  If I have a string  
that's always in English, why do I need to generate the dchars based on  
the characters in that array?

-Steve


More information about the Digitalmars-d-learn mailing list