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.
More information about the Digitalmars-d-learn