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

Reply via email to