Subtipado

Las estructuras no pueden heredar de otras estructuras. Pero para lograr extender la funcionalidad de dichas estructuras, D proporciona un método para lograrlo: subtipado (subtyping en inglés).

Una estructura puede definir uno de sus miembros mediante las palabras reservadas alias this:

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

Cualquier función u operación que trabaje sobre la estructura SafeInt y no pueda ser manejada por este tipo de datos es enviada al miembro indicado en el alias this. Desde fuera, la estructura SafeInt parecerá como si fuese un número entero normal.

Esto permite extender otros tipos de datos con nueva funcionalidad pero con cero sobrecarca en términos de memoria o tiempo de ejecución. El compilador se asegura de realizar las operaciones correctas cuando se accede a los miembros marcados con alias this.

La construcción alias this también funciona con clases.

rdmd playground.d