On Monday, 22 August 2022 at 16:06:37 UTC, Andrey Zherikov wrote:
On Monday, 22 August 2022 at 15:15:22 UTC, Paul Backus wrote:
My first instinct is to say that this is the user's mistake. UDAs are not evaluated like normal expressions, and anyone using UDAs is going to have to learn that sooner or later.

My feeling was that UDA expression is just an expression that's evaluated at compile time. Am I wrong? Where can I read about the differences between UDA and 'normal' expressions?

A UDA can be either an expression or a symbol. Here are some examples of symbol UDAs that are not valid expressions:

```d
import std.stdio;
struct S;
template t() {}

@S           // a type
@(std.stdio) // a module
@t           // a template
int n;
```

Reply via email to