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...
}
```

Reply via email to