Any suggestions for being able to call one function for any instance given but maintain flexible return types?
Not sure if it helps, but you can define final methods in an interface, which can call virtual interface methods:
```d interface PathConverter { string getValue();
final T toD(T)() { import std.conv : to; return to!T(getValue()); } } ``` Not tested as AFK.