```
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 ?

Reply via email to