``` interface I { //auto foo(int i); //forbidden
auto bar(T)(T i); //Error: function a.I.bar!(int).bar has no function body with return type inference
} class A:I { int foo(int i) { return i; } T bar(T)(T i) { return i; } } class B:I { int foo(int i) { return i; } string bar(T)(T i) { import std.conv; return to!string(i); } } void main() { import std.stdio; //void fun(I i) //{ // writeln(i.bar(1)); //Error (see above) //} auto a = new A(); auto b = new B(); writeln(a.foo(2)); //works fine writeln(a.foo(3)); //works fine //fun(a); //Error (see above) //fun(b); //Error (see above) } ``` Does class A or class B implement I ?