Lars T. Kyllingstad <> changed:

           What    |Removed                     |Added
             Status|NEW                         |RESOLVED
                 CC|                            |
         Resolution|                            |WONTFIX

--- Comment #1 from Lars T. Kyllingstad <> 2011-01-03 
05:55:54 PST ---
The thing is, char[] is assumed to be UTF-8 encoded, which means that one array
element doesn't necessarily correspond to one symbol (or, more precisely, one
code point may be composed of several code units).  That's why (from a range
point of view) the element type of char[] is dchar, which is UTF-32 encoded, or
"decoded" in the sense that one element is one symbol.

Here's an example to prove the point:

  char[] foo = "�ngstr�m";
  replace(foo, 0, 1, "a");

If this were allowed, foo would not contain "angstr�m" as one may expect, it
would contain garbage.  This is because the first character, "�", spans two
array elements.

You have two options:

1. If you want to use std.array.replace() like this with character arrays, you
should use dchar[].

2. Use std.string.replace(), which works with strings but always allocates.

I am closing this as WONTFIX.  There are several people who disagree with dchar
being the range element type of char[], however, so feel free to reopen as an
enhancement request if you wish.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to