On Saturday, 5 January 2013 at 11:57:39 UTC, Johannes Pfau wrote:
Era Scarecrow wrote:
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.

One example is std.benchmark. It currently detects if a function is a benchmark function by checking the name: void benchmark_stdio();

With UDAs we can do this:
@benchmark stdio();
or
@benchmark("Benchmarking stdio reads, using xKB buffer") benchStdio1();

There's still the issue of "How do I get all the declarations in a module (/ the applications)", but UDAs already help a lot.

Yes I understand how you can attach some information using a UDA, but that still doesn't tell me _how to use_ it. Unless you can somehow locate & manipulate/use/pass the information around than it's no more than a comment that isn't removed immediately.


Slightly off topic: I get the feeling that with the questions of current specs, the large number of changes (few hugely breaking) and outdated TDPL the language documentation needs a good through update. Perhaps a TDPL v2 regarding changes to the language; Rather than replacing TDPL, it instead it compliments it. And when phobos is more mature and isn't going to be changing then an API/reference book for it would likely be a third book.

Reply via email to