User defined attributes use

simendsjo simendsjo at gmail.com
Mon Sep 23 02:42:59 PDT 2013


On Monday, 23 September 2013 at 07:47:32 UTC, Jacob Carlborg 
wrote:
> On 2013-09-20 16:12, simendsjo wrote:
>
>> You could of course fix this in a library too.
>>
>> enum AttributeUsage {
>>   struct_ = 1 << 0,
>>   class_ = 1 << 1,
>>   //etc
>> }
>>
>> struct attribute { AttributeUsage usage; }
>>
>> Then the library could give a compile-time error if you tries 
>> to use it
>> where it's not meant to be.
>
> I'm not sure how I could do that.

You can recurse into UDAs for attributes and pass along the type 
that had the uda. A static assert could verify that it's used on 
the correct type.
(For my library, that would mean editing my 
getMembersAndAttributes template.)


More information about the Digitalmars-d-learn mailing list