Sobrecarga de função - duas funções diferem apenas por um parâmetro padrão

class A{
    public:
        void foo(int x)
        {
            cout << "foo with one\n";
        }

        void foo(int x, int y=10)
        {
            cout << "foo with two\n";
        }
};

int main()
{
    A a;
    a.foo(1);   //error?
}

Então, por que não consigo sobrecarregarvoid foo(int) com uma função que aceita um parâmetro padrã