Le 2011-09-05 à 8:42, Andrei Alexandrescu a écrit :

> On 9/5/11 2:34 AM, Walter Bright wrote:
>> 
>> On 9/4/2011 10:54 PM, Jonathan M Davis wrote:
>>> 
>>> It's a bug in dmd. string literals aren't lvalues
>> 
>> Yes, they are, because one can take the address of them.
>> 
>> What they are not are *modifiable* lvalues.
> 
> How can we express that in the type system?

Actually if you see the string literal "hello" as an immutable(char[5]) inside 
the resulting binary, then you can take its address so it is a rvalue.

But that's a static array. If you implicitly convert it to a dynamic array, of 
type immutable(char)[], this dynamic array is a temporary rvalue and you 
shouldn't be able to take its address.

So do we want static arrays or dynamic arrays as string literals? Static arrays 
can be lvalues, dynamic arrays cannot.

-- 
Michel Fortin
[email protected]
http://michelf.com/



_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to