structは他のstructから継承することはできません。
しかしDはstructのために、その機能を拡張する別の
素晴らしい方法を提供します: サブタイピングです。
構造体型はalias thisとしてそのメンバの1つを定義できます:
struct SafeInt {
private int theInt;
alias theInt this;
}
それ自身型にハンドルされないSafeIntの任意の関数や操作は
alias thisしたメンバに転送されます。
外部からSafeIntは普通の整数のように見えます。
これは他の型を新しい機能で拡張することを可能にし、
それでいて実行時のメモリの面でゼロ・オーバーヘッドです。
コンパイラはalias thisメンバにアクセスした時にするべきことをします。
alias thisはクラスにも動作します。