Request: Implement constant folding for .dup

BCS ao at pathlink.com
Tue Feb 20 13:08:05 PST 2007


Reply to Stewart,

> Don Clugston Wrote:
> <snip>
>> Just create a new const with the same value as the first one -- all
>> compile-time consts have value semantics.
>> 
>> ie,
>> char [] a = "xyz";
>> char [] b = a.dup;
>> would be the same as
>> char [] a = "xyz";
>> char [] b = "xyz";
> So it would behave as though the programmer typed this rather than
> 
> char[] a = "xyz";
> char[] b = a;
> ?  There doesn't appear to be any difference.  As I try it (both with
> and without const), the two reference the same copy of the string data
> either way.
> 
> But it's probably not defined.  OTOH you could try defining .dup to
> force the new constant/variable to reference a new copy; however,
> there's an ambiguity or two in this definition.  If you're using .dup
> to define a struct or class member initialiser, should it copy only
> once, or should every instance of the struct or class contain a new
> copy?  And what about templates?
> 
> Stewart.
> 

Might the issue be that some function would need the .dup at run time but 
can otherwise be used at compile time?





More information about the Digitalmars-d mailing list