title: Polymorphism not working if overloaded functions are being overridden only partially
body: <p>Today I felt like a noob:</p>
  
  <pre><code>class Base
  {
  public:
      virtual void foo(int)=0;
      virtual void foo(int, int) {}
      virtual void bar() {}
  };
  
  class Derived : public Base
  {
  public:
      virtual void foo(int) {}
  };
  
  void main()
  {
      Derived d;
      d.bar(); // works
      d.foo(1); // works
      d.foo(1,2); // compiler error: no matching function call
  }
  </code></pre>
  
  <p>I expected <code>d</code> to inherit <code>foo(int, int)</code> from <code>Base</code>, but it does not. So what am I missing here?</p>