UDAs on templates
Dicebot
public at dicebot.lv
Wed Oct 16 05:34:28 PDT 2013
On Wednesday, 16 October 2013 at 12:26:34 UTC, John Colvin wrote:
> 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)
I think this gets re-written like this:
template foo(T)
{
@(1) void foo() {}
}
..which does explain the observed behavior. As a workaround you
can define some default guard value of T and assert inside foo()
call if it is actually ever used.
More information about the Digitalmars-d-learn
mailing list