Template method in interfaces
    Arafel via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Aug 10 08:20:37 PDT 2016
    
    
  
I'm not sure if the following is even expected to work, since I'm 
not sure how the vtable for the interface would look like (well, 
that would be applicable to any overriden templated method, 
though):
---
public interface I {
	void func(T)(T t);
}
public class C : I {
	void func(T)(T t) {
	}
}
void main() {
	I i = new C();
	i.func(1);
}
---
But since the error I get is in the linker, and not in the 
compiler, I guess that's somehow a bug? Or how should it work 
then?
https://dpaste.dzfl.pl/7a14fa074673
/d31/f76.o: In function `_Dmain': /d31/f76.d:(.text._Dmain+0x24): 
undefined reference to `_D3f761I11__T4funcTiZ4funcMFiZv' 
collect2: error: ld returned 1 exit status --- errorlevel 1
PS: Now I see [1] that it shouldn't, so perhaps the compiler 
should reject templated methods in interfaces from the beginning?
[1]: http://forum.dlang.org/post/jg504s$1f7t$1@digitalmars.com
    
    
More information about the Digitalmars-d-learn
mailing list