¿Por qué las funciones de los miembros de la clase tienen funciones gratuitas con el mismo nombre?

Recientemente me llamó la atención ese miembro funcionacompletamentesombra Funciones gratuitas con el mismo nombre dentro de la clase. Y por completo quiero decir que todas las funciones gratuitas con el mismo nombre no se consideran para la resolución de sobrecarga. Puedo entender por qué se hace con algo como esto:

void f();

struct S
{
    void f();

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

donde las funciones tienen firmas idénticas, su alcance natural y natural funciona de la misma manera. Pero, ¿por qué prohibir las llamadas no ambiguas donde la función libre tiene una firma 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
    }
};

No estoy preguntando cómo llamar a unsombreado Función gratuita desde dentro de la clase. Lo que quiero saber es la razón detrás de este diseño.

Respuestas a la pregunta(3)

Su respuesta a la pregunta