When is a slice not a slice?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Jun 6 11:39:21 PDT 2014


On Fri, 06 Jun 2014 06:14:30 -0400, Rene Zwanenburg  
<renezwanenburg at gmail.com> wrote:

> On Friday, 6 June 2014 at 08:17:43 UTC, Alix Pexton wrote:
>> On 05/06/2014 8:58 PM, Steven Schveighoffer wrote:

>>>
>>> Yes, this should work (and execute the initializer at compile time):
>>>
>>> static b = ...
>>
>> Ah, the problem with static is that I want to use the values at compile  
>> time to create other values. Using static puts construction between  
>> compile time and run time.

Not exactly (at least I don't think). The static initializer itself is  
generated at compile time. But the assignment to the static variable is  
done at run time.

>> Initialising in static this means that the symbols need to be declared  
>> without initializers and that means not disabling default construction
>> ><
>
> Immutables should be usable at compile time and not allocate a new  
> instance on every use when in module scope.

I was about to say this. But immutable can have its own set of issues. If  
you want strictly compile-time generation of data, then immutable is the  
way to go.

But if you want to use it at runtime as well, immutable can hamper some  
things. I'm sure your example is a very small or reduced snippet of what  
you are actually doing.

-Steve


More information about the Digitalmars-d-learn mailing list