Pourquoi une méthode publique const n'est-elle pas appelée lorsque la méthode non const est privée?

Considérez ce code: struct A { void foo() const { std::cout << "const" << std::endl; } private: void foo() { std::cout << "non - const" << std::endl; } }; int main() { A a; a.foo(); } L'erreur du compilateur est: erreur: 'void A :: foo ()' est privé`. Mais quand je supprime...