Por que o membro da classe funciona com funções livres de sombra com o mesmo nome?

Recentemente, veio ao meu conhecimento que as funções de membrocompletamentesombra funções livres com o mesmo nome quando dentro da classe. E por completamente quero dizer que cada função livre com o mesmo nome não é considerada para resolução de sobrecarga em tudo. Eu posso entender porque é feito com algo assim:

void f();

struct S
{
    void f();

    void g()
    {
        f(); // calls S::f instead of ::f
    }
};

onde as funções têm assinaturas idênticas, seu único escopo natural como variável funciona da mesma maneira. Mas por que proibir chamadas não ambíguas onde a função livre tem assinatura diferente como esta:

void f();

struct S
{
    void f(int x);

    void g()
    {
        f(); // fails to compile attempting to call S::f, which has wrong signature
    }
};

Eu não estou perguntando como chamar umsombreado função livre de dentro da classe. O que eu quero saber é a lógica por trás desse design.

questionAnswers(3)

yourAnswerToTheQuestion