On Friday, 28 February 2014 at 11:47:35 UTC, Dicebot wrote:
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.
Damn good explanation. I think I'll do a pull for this in the
docs. Thank you!