Is it possible to add items to the arrays and hashes at compile time?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 10 00:15:26 PDT 2015


On 06/09/2015 09:36 PM, Dennis Ritchie wrote:

 > But I can not do so:
 >
 > enum int[][int][int] ctHash = init_ctHash(5);
 >
 > ctHash = merge(ctHash, init_ctHash(6));
 >
 > I have a question: why variables may not be initialized more than once?
 > Why can't they to resave at compile time?

My phrasing was off: By definition, initialization happens once. :) What 
I meant is, once initialized, a compile-time variable cannot be 
reassigned. The reason is, to effect compile time evaluation, one needs 
to use 'enum' (or 'static const') but 'enum' is a literal, i.e. it 
cannot be modified.

As I've shown, it is possible to use an expression that will be used as 
the value of the compile-time variable. As long as it is evaluable at 
compile time, the expression can be arbitrarily complex.

Ali



More information about the Digitalmars-d-learn mailing list