View mode: basic / threaded / horizontal-split · Log in · Help
March 04, 2005
Non char[] string inconsistencies.
This compiles ...

void main()
{
 char[] A;
 char[] B;

 A = "abc";
 B = "def" ~ A ~ "ghi";
}


But this does not ...

void main()
{
 dchar[] A;
 dchar[] B;

 A = "abc";
 B = "def" ~ A ~ "ghi";
}

Errors are ...

test2.d(7): incompatible types for (("def") ~ (A)): 'char[]' and 'dchar[]'
test2.d(7): Can only concatenate arrays, not (char[] ~ dchar[])
test2.d(7): incompatible types for (("def" ~ A) ~ ("ghi")): 'int' and
char[]'
test2.d(7): Can only concatenate arrays, not (int ~ char[])
test2.d(7): cannot implicitly convert expression "def" ~ A ~ "ghi" of type
int to dchar[]

??? Why is this so ??? I can only assume that bare string literals are
presumed to be char[].

But this *does* compile ...

void main()
{
 dchar[] A;
 dchar[] B;

 A = "abc";
 B = "def";
 B ~= A;
 B ~= "ghi";
}

So bare string literals are not always char[].

-- 
Derek Parnell
Melbourne, Australia
5/03/2005 10:01:05 AM
Top | Discussion index | About this forum | D home