On Friday, 4 January 2013 at 15:45:21 UTC, Philippe Sigaud wrote:
OK, now that 2.061 is out, we have User-Defined Attributes (UDAs).

Except, there is no doc on them, no explanation, nothing. For people who did not follow the monstrous threads in November, it's as if UDA do not exist.

...

Here is the executive summary:

User Defined Attributes (UDA) are compile time expressions that can be attached to a declaration. These attributes can then be queried, extracted, and manipulated at compile time. There is no runtime component to them.

This is sorta like tuples; But from the brief summaries I cannot fully understand how or where they would be used. I understand some attributes can be made and added that some compilers may use (@noreturn as an example), but outside of the compiler I'd need an example of how to make use of them.

Since there's no runtime component, then aside from carrying a tuple and some information forward at compile-time, what else can it do? How would you use it? Are there any special tuple formats that give information to automatically be included/compiled into the structs/classes without having to resort to mixins?



Curiously enough it seems like @clone would be a useful example. Let's assume we want to write @clone, it's meaning that rather than writing a custom postblit to it's done automatically.

 struct S {
   string identifier;
   int value;
   string[] attributes; // @clone

   this(this) {attributes = attributes.dup;}
 }

Normally you'd write a this(this) as above, but if we used UDA's how could it be used/implemented?

Reply via email to