The question is in the header:
How to say to compiler that I want to inherit final template
bethod of base interface into derived class?
I have the following example. I know that it is maybe
overcomplicated but still I need this feature in my code.
import std.stdio;
interface IBase
{
template getStr(string fieldName)
{
final string getStr()
{
return "George";
}
}
string getStr(string fieldName);
}
class Derived: IBase
{
override string getStr(string fieldName)
{
return "Sam";
}
}
void main()
{
auto obj = new Derived;
writeln( obj.getStr!("aaa")() );
}
Compilation output:
/d907/f266.d(33): Error: obj.getStr isn't a template
When I have all of these methods having the same name compiler
shadows template method from the base interface. So the question
is how to inherit template method without reimplementing it in
derived class?