CTFE & enums & static assert
Robert M. Münch via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri May 15 09:45:52 PDT 2015
On 2015-05-04 18:22:17 +0000, Ali Çehreli said:
> There are many different kinds of tuples in D, only two of which I can handle:
>
> 1) Tuple from std.typecons, which are ordinarily created at run time
>
> 2) TypeTuple from std.typetuple, which are compile-time entities
>
> The documentation is not clear that __traits(allMembers) returns a
> TypeTuple, which additionally has a bad name.
>
> TypeTuple is great because it enables "compile-time foreach"
> (unfortunately, implicitly):
>
> foreach (m; __traits(allMembers, A)) {
> // This body is repeated for each member at compile time
> }
Is there a way I can build an ENUM from within the FOREACH? What I want
to achive is, that I would like to use:
final switch (myEnum) ...
and have myEnum build at compiletime. With this the compiler would give
an error whenever I have forgotten to update my code to handle a new
case.
> > 2. I'm wondering why members1 doesn't has a type at all.
>
> Because it is a TypeTuple of values of various types and even types themselves.
But shouldn't be the type than be "TypeTuple"?
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster
More information about the Digitalmars-d-learn
mailing list