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;
```