Using traits to detect alias declaration

cal callumenator at gmail.com
Sun Sep 9 20:43:46 PDT 2012


On Monday, 10 September 2012 at 03:30:25 UTC, Jonathan M Davis 
wrote:
> On Monday, September 10, 2012 05:01:05 cal wrote:
>> __traits(allMembers), I'd like to be able to detect if a given 
>> member is an alias (and get the member that is aliased). Is 
>> there a way to do this currently?
>
> No. As far as the compiler is concerned, there is no difference 
> between an
> alias and what it's aliased from.

Played around a bit, and this _seems_ to work:

// Detect alias
foreach(member; __traits(allMembers, l.main))
{
    static if (__traits(compiles, __traits(identifier, 
mixin(member))))
    {
       string ident = __traits(identifier, mixin(member));
       if (ident != member)
         /// Detected an alias
    }
}

But I wonder if this is reliable.




More information about the Digitalmars-d-learn mailing list