Traits: getting all *public* members of a class?
    Andrej Mitrovic 
    andrej.mitrovich at gmail.com
       
    Sat Jun  8 07:06:31 PDT 2013
    
    
  
On Saturday, 8 June 2013 at 13:57:13 UTC, Q wrote:
> Hi there, I want to iterate over all the public members of a 
> class.
It is a known problem. The workaround is to use is(typeof()):
void main() {
     foreach (mem; __traits(allMembers, Foo))
     {
         static if (is(typeof(
             __traits(getMember, Foo.init, mem)
         )))
         {
             enum prot = __traits(getProtection,
                             __traits(getMember, Foo.init, mem));
             static if (prot == "public") {
                 pragma(msg, mem);
             }
         }
     }
}
    
    
More information about the Digitalmars-d-learn
mailing list