tell if __traits(allMembers, ... ) is an enum (not manifest constant)

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Feb 24 20:55:09 PST 2016


On Thursday, 25 February 2016 at 04:50:14 UTC, Nicholas Wilson 
wrote:
> On Thursday, 25 February 2016 at 04:32:24 UTC, Adam D. Ruppe 
> wrote:
>> On Thursday, 25 February 2016 at 04:25:25 UTC, Nicholas Wilson 
>> wrote:
>>> foreach(m; __traits(allMembers, ...)
>>> {
>>>     static if(is(m== enum))
>>> }
>>
>>
>> That's close but not quite there... try
>>
>> static if(is(typeof(__traits(getMember, Item, m)) == enum))
>>
>> for member variables, or if you are looking at a type itself 
>> youcan leave off the typeof() bit.
>
> what is this black magic???
>
> static if(is(typeof(__traits(getMember, vulkan_input, m)) == 
> enum))
> {
>             writeln(typeof(__traits(getMember, vulkan_input, 
> m))).stringof; //fails to compile
>             writeln(m); //prints nothing
> }

oops should be
writeln(typeof(__traits(getMember, vulkan_input,  m)).stringof);
that compiles but still prints nothing



More information about the Digitalmars-d-learn mailing list