On Friday, 28 February 2014 at 11:27:31 UTC, Mike wrote:
I recently saw the following line of code:
enum size = __traits(classInstanceSize, Foo);
Why "enum"? Is this the equivalent of "immutable auto" or
something?
Mike
enum creates compile-time placement constant. It does not create
any symbol in resulting binary. Value of such enum gets pasted
straight into the context when used.
Most similar thing in C terms would have been `#define size
__traits(classInstanceSize, Foo)`, alas from preprocessor issues
not present in D :)
It is idiomatic D way to force compile-time evaluation of
expression.