Currently in D you would be forced to create a vtable struct manually.
But if we had something like signatures you could do this:
```d
struct Foo {
//...
}
struct Bar {
InputRange input;
}
void doIt() {
Bar bar;
Foo* foo = new Foo;
bar.input = foo;
}
```
Classes are not the only way to do OOP :)