On Thursday, 19 December 2019 at 21:26:51 UTC, Paul Backus wrote:
The reason this doesn't work is that interface methods are
virtual, and virtual methods can't be templates. [1] If you
want to have multiple kinds of entities, one option is to
create an Entity interface and EntityAdapter(T) class using the
same technique as above, and have your applyTo method accept an
Entity as its argument. You can see an example of what that
would look like at the following link:
https://gist.github.com/pbackus/f61734804a627d379c7916f783ea7725#file-oop_version-d
Another option is to forget about classes and interfaces and do
everything with templates, using a library like sumtype [2].
Here's a link to an example of what that would look like:
https://gist.github.com/pbackus/f61734804a627d379c7916f783ea7725#file-template_version-d
Thanks for a good explanation around virtual methods and
templates as well as examples! Now I have plenty of good examples
to play around with. :)