When is a slice not a slice?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jun 5 12:58:32 PDT 2014


On Thu, 05 Jun 2014 15:56:00 -0400, Philippe Sigaud via  
Digitalmars-d-learn <digitalmars-d-learn at puremagic.com> wrote:

>>         enum b = DataAndView(1);
>>         assert (!sameTail(b.data, b.view));
>
> I suppose it's because enums are manifest constants: the value they
> represent is 'copy-pasted' anew everywhere it appears in the code. So
> for arrays and associative arrays, it means recreating a new value
> each and every time.
> In your case, your code is equivalent to:
>
> assert (!sameTail(DataAndView(1).data,DataAndView(1).view));
>
> And the two DataAndView(1), being completely separated, do not have
> the same tail.

Yes, this should work (and execute the initializer at compile time):

static b = ...

-Steve


More information about the Digitalmars-d-learn mailing list