It seems that __traits(getAttributes, T) returns an empty tuple for any template (or template function) T, no matter what UDAs T has been given. Am I doing something wrong? @(1) void foo(T)(){} pragma(msg, __traits(getAttributes, foo)); // tuple() pragma(msg, __traits(getAttributes, foo!int)); // tuple(1)