On Friday, 29 August 2025 at 18:44:00 UTC, Lance Bachmeier wrote:
Classic D code includes types like Matrix!double when you could
just use DoubleMatrix.
They're like macros in Lisp. Powerful in principle but
routinely a PITA when you actually use them.
Sane way to do things:
```d
struct Matrix(T) {
this(Blah blah) {
// Blah blah...
}
// Just more functions...
}
```
Insane way to do things:
```d
struct Matrix(R, C, T, bool canFly, bool isCute) if
((isNumberType!T || isMathType!T) && isGoodType!T &&
isMagicType!T) {
static if (canFly) {
this(Blah blah) {
// Blah blah...
}
} else static if (isCute) {
this(Blah blah) {
// Blah blah...
}
} else {
// Blah blah...
}
// Just more template hell...
}
```