On 4/12/19 5:43 AM, Jacob Carlborg wrote:

The problem is that "__traits(getAttributes, T)" in it self is not valid code. It needs to be part of larger expression or statement.

It does work, as long as it's not an alias passed into a template:

void main()
{
   @(3) int a;
   static assert(__traits(compiles, __traits(getAttributes, a))); // OK
   alias b = a;
   static assert(__traits(compiles, __traits(getAttributes, b))); // OK
   static void foo(alias c)() {
static assert(__traits(compiles, __traits(getAttributes, c))); // Error
   }
   foo!a();
}

It seems like a straight-up bug to me. I don't see the difference between those 3 calls.

-Steve

Reply via email to