Template args to UDA's

Manu turkeyman at gmail.com
Tue May 28 07:08:54 PDT 2013


Indeed it does.
It's a bit obtuse though having to wrap my function up in an outer template
just to scope the template arg correctly.

Do you think it's reasonable that an attribute should be scoped such that
it can see the template args of the declaration it's bound to?
It kinda makes sense, an attribute is intrinsically connected to the
declaration, so it should be able to access any template args given...


On 28 May 2013 23:51, Kenji Hara <k.hara.pg at gmail.com> wrote:

> 2013/5/28 Manu <turkeyman at gmail.com>
>
>> So I've run into an expression I need to be able to implement std.simd
>> properly for GDC/LDC.
>>
>> Doesn't work:
>>   @attribute("target", T) void func(string T)(...);
>>
>> In this case, currently, the UDA can't receive the template arg that was
>> given to the function.
>>
>> I require that attributes on templates be able to make use of the
>> template args, since the template arg given may affect the attribute in
>> some circumstances.
>>
>
> This code works.
>
> string attribute(string, string s) { return s; }
>
> //@attribute("target", T) void func(string T)() {}
> template func(string T)
> {
>     @attribute("target", T) void func() {}
> }
>
> void main()
> {
>     alias f1 = func!"a";
>     alias f2 = func!"b";
>     pragma(msg, __traits(getAttributes, f1));   // "a"
>     pragma(msg, __traits(getAttributes, f2));   // "b"
>     f1();
>     f2();
> }
>
> Kenji Hara
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20130529/53e1eb94/attachment-0001.html>


More information about the Digitalmars-d mailing list