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