class Base
{
  void foo(string s){}
}

class Derived: Base
{
  alias Base.foo foo;
  void foo(long s){}
}

So far so good.

Now add new method to the Base class.

class Base
{
  void foo(string s){}
  void foo(int s){}
}

Now behavior of the calling code silently changes.

Reply via email to