Sous-types

Une struct ne peut pas hériter d'autres structs. Mais D a un autre moyen d'étendre une fonctionnalité de ces pauvres structs: le sous-typage.

Une structure peut définir un de ses membres en tant qu'alias this:

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

N'importe quelle fonction ou opération qui ne peut pas être réalisée par SafeInt sera gérée par l'attribut alias this. De l'extérieur, SafeInt se comporte comme un entier normal.

Cela permet d'étendre des types avec des nouvelles fonctionnalités sans aucun coût en terme de mémoire ou d'exécution. Le compilateur s'assure de faire la bonne opération quand il accède à l'attribut alias this.

alias this fonctionne également avec les classes.

rdmd playground.d