Створення підтипів

Структура не може успадковуватись від інших структур. Але мова D забезпечує для цього обмеженого типу інші чудові засоби, які допомагають розширити їх функціональність: створення підтипу.

Тип структури може бути визначеним одним зі своїх членів, як alias this:

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

Будь-яка функція або операція над SafeInt, яка не зможе обробити цей тип, буде спрямована до члена alias this. Тоді ззовні SafeInt буде виглядати, як звичайне ціле число.

Це дозволяє розширити інші типи новими функціональними можливостями, але з нульовими витратами з точки зору пам'яті або виконання. Компілятор намагається чинити правильно, коли звертається до члена alias this.

alias this працює також з класами.

rdmd playground.d