On Wed, 13 May 2009 14:28:46 -0400, Doctor J <nob...@nowhere.com> wrote:
Taken straight from http://www.digitalmars.com/d/1.0/arrays.html, this
doesn't compile:
void main()
{
string str = "abc";
char* p = str; // pointer to 1st element
}
"Error: cannot implicitly convert expression (str) of type char[] to
char*"
I agree it shouldn't compile; I guess I'm asking why the docs say it
does.
While I'm at it, what's up with the very first strings example:
char[] str;
char[] str1 = "abc";
str[0] = 'b'; // error, "abc" is read only, may crash
Should that just be:
char[] str = "abc";
str[0] = 'b'; // error, "abc" is read only, may crash
To make this more clear, the example text from the array page says:
A pointer to a char can be generated:
char* p = &str[3]; // pointer to 4th element
char* p = str; // pointer to 1st element
where str is previously identified as a string (i.e. char[])
it is a documentation bug, this behavior is not allowed. Please submit a
bug to bugzilla: http://d.puremagic.com/issues/
On the other hand, string *literals* are implicitly castable to char *:
char *p = "abc";
works.
-Steve