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

Reply via email to