サブタイピング

structは他のstructから継承することはできません。 しかしDはstructのために、その機能を拡張する別の 素晴らしい方法を提供します: サブタイピングです。

構造体型はalias thisとしてそのメンバの1つを定義できます:

struct SafeInt {
    private int theInt;
    alias theInt this;
}

それ自身型にハンドルされないSafeIntの任意の関数や操作は alias thisしたメンバに転送されます。 外部からSafeIntは普通の整数のように見えます。

これは他の型を新しい機能で拡張することを可能にし、 それでいて実行時のメモリの面でゼロ・オーバーヘッドです。 コンパイラはalias thisメンバにアクセスした時にするべきことをします。

alias thisはクラスにも動作します。

rdmd playground.d