D Programming: How to Define and Use Custom Attributes

Basile B. b2.temp at gmx.com
Wed Sep 13 15:03:27 UTC 2023


On Wednesday, 6 September 2023 at 18:54:26 UTC, Soham Mukherjee 
wrote:
> I'm exploring the D programming language and I'm curious about 
> custom attributes. How can I define and use custom attributes 
> in D to add metadata or behavior to my code?
>
> For example, let's say I want to create a custom attribute 
> @MyCustomAttribute that I can apply to functions or types. How 
> do I define this attribute, and how can I use it to influence 
> the behavior of my D code?
>
> It would be helpful if you could provide code examples and 
> explain how custom attributes can be leveraged in practical 
> scenarios within D programming. Thank you for your insights!

I used UDA to

- statically check that classes fields [did not require the 
GC](https://gitlab.com/basile.b/iz/-/blob/master/import/iz/memory.d?ref_type=heads#L227).
- handle [main 
arguments](https://gitlab.com/basile.b/iz/-/blob/master/import/iz/options.d?ref_type=heads#L658)
- define [serializable aggregate 
members](https://gitlab.com/basile.b/iz/-/blob/master/import/iz/serializer.d?ref_type=heads#L2179), absurdly complex tho.
- [compose 
functions](https://gitlab.com/basile.b/iz/-/blob/master/import/iz/sugar.d?ref_type=heads#L1413)

A very simple example written recently (previous are rather old): 
[class 
qualifiers](https://forum.dlang.org/thread/gfqnotxyttdiqwfyvldo@forum.dlang.org), allowing to restrict the candidate in an overload set, in a fashion that ressemble a recent c++ feature.


More information about the Digitalmars-d mailing list