D bietet Vererbung für Klassen an, nicht aber für
struct
s. Zur Erweiterung der Funktionalität von
struct
s gibt es allerdings ein weiteres großartiges
Mittel: Die Verwendung von Subtypen.
Einer der Member eines struct
s kann als
alias this
definiert werden:
struct SafeInt {
private int theInt;
alias theInt this;
}
Jede Funktion oder Operation an SafeInt
s,
die nicht vom Typ selbst behandelt werden kann,
wird an den alias this
-Member weitergeleitet.
Von außen betrachtet ist SafeInt
also ein
normaler Integer.
Dies erlaubt die Erweiterung anderer Typen mit neuer Funktionalität, aber ohne Mehraufwand (engl.: zero overhead) in Bezug auf Speicher oder Laufzeit.