Annotations or custom attributes

Michel Fortin michel.fortin at michelf.com
Fri Mar 9 09:23:22 PST 2012


On 2012-03-09 16:15:30 +0000, Andrei Alexandrescu 
<SeeWebsiteForEmail at erdani.org> said:

> I think a good approach in D would be to define mixins that work in 
> conjunction with the feature involved, for example:
> 
> class A {
>      int thing;
>      mixin(DoNotSerialize!"thing");
>      ...
> }
> 
> or together:
> 
> class A {
>      mixin(DoNotSerialize!(int, "thing"));
>      ...
> }

It's ugly, but it works… only to a point though. Try to annotate 
overloaded functions and it'll become a mess: either you duplicate the 
function name and all the argument types for each function, or you wrap 
the whole function body in the mixin.

If you need to annotate a struct or a class you'll have the same 
problem, just at a bigger scale. And it gets worse if you want to 
annotate templated types and functions: how can the attribute apply to 
each instance?

I'm not saying any of this is impossible using mixins, just that it 
becomes impractical as you go beyond the most simple cases.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list