Структура
не може успадковуватись від інших структур
. Але мова D
забезпечує для цього обмеженого типу інші чудові засоби, які допомагають
розширити їх функціональність: створення підтипу.
Тип структури може бути визначеним одним зі своїх членів, як
alias this
:
struct SafeInt {
private int theInt;
alias theInt this;
}
Будь-яка функція або операція над SafeInt
, яка не зможе обробити цей
тип, буде спрямована до члена alias this
. Тоді ззовні SafeInt
буде
виглядати, як звичайне ціле число.
Це дозволяє розширити інші типи новими функціональними можливостями,
але з нульовими витратами з точки зору пам'яті або виконання.
Компілятор намагається чинити правильно, коли звертається до члена
alias this
.
alias this
працює також з класами.