Why doesn't this work in D2?

Philippe Sigaud philippe.sigaud at gmail.com
Mon Jun 28 06:51:43 PDT 2010

On Mon, Jun 28, 2010 at 14:35, Steven Schveighoffer <schveiguy at yahoo.com>wrote:

> 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.

Ah yes, indeed, you're right.

> 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?
All that I can say is that it instantly broke dozens of unit tests in my
projects, which were using strings a simple random-access ranges. It took me
2 DMD releases to work my way uout of it.

Maybe I should have a look at byCodeUnit or somesuch. But for clueless users
like me, strings suddenly became much more complicated to use. Maybe I was
using them in unsafe ways, I don't know. I just hope for a way to get my
simple strings back.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20100628/3a88585b/attachment.html>

More information about the Digitalmars-d-learn mailing list