Por que chamar uma função não membro com o mesmo nome de uma função membro gera um erro
Eu tenho o próximo código:
void f(int){}
struct A
{
void f()
{
f(1);
}
};
Este código não está bem formado com a mensagem de erro (GCC):error: no matching function for call to ‘A::f(int)’
ou (clang)Too many arguments to function call, expected 0, have 1; did you mean '::f'?
Por que preciso usar::
chamar a função de não membro com o mesmo nome da função de membro, mas com assinatura diferente? Qual é a motivação para esse requisito?
Eu acho que o compilador deve ser capaz de descobrir isso. Eu quero chamar a função de não-membro, pois a assinatura é diferente (o clang até coloca isso na mensagem de erro!).
Não marque isso como duplicado - é uma pergunta diferente destaChamar em C ++ uma função não membro dentro de uma classe com um método com o mesmo