http://d.puremagic.com/issues/show_bug.cgi?id=5379
Lars T. Kyllingstad <bugzi...@kyllingen.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzi...@kyllingen.net Resolution| |WONTFIX --- Comment #1 from Lars T. Kyllingstad <bugzi...@kyllingen.net> 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: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------