On Monday, 27 February 2017 at 19:26:06 UTC, Christian Köstlin wrote:
Is it enough to put up static immutable modifiers?
How can I make sure, that the calculations are done at compile time?

...
static immutable time = Unit("time", [Unit.Scale("ms", 1),
...

An initialization of a static variable (or constant, as in this case) is indeed always done at compile time. Another option would be using an enum storage class. Difference between enum and static or shared immutable is that enum IS a compile time constant, not just a runtime constant initialized at compile-time. That means you can use enums to calculate other compile-time stuff.

Template parameters are also calculated at compile time. If they take a value, they are enum values, only difference to normal enums being that their values are defined at template call site. Thus, if you pass an expression to a template argument, you can be sure it's calculated at compile time.

Reply via email to