У меня есть следующий код:
void f(int){}
struct A
{
void f()
{
f(1);
}
};
Этот код плохо сформирован с сообщением об ошибке (GCC): error: no matching function for call to ‘A::f(int)’
или (clang) Too many arguments to function call, expected 0, have 1; did you mean '::f'?
Зачем мне нужно использовать ::
для вызова функции, не являющейся членом, с тем же именем, что и функция-член, но с другой подписью? Какова мотивация этого требования?
Я думаю, что компилятор должен уметь это понять. Я хочу вызвать функцию нечлена, поскольку подпись отличается (clang даже помещает это в сообщение об ошибке!).
Пожалуйста, не помещайте это как дубликат - это другой вопрос из этого Вызов в С++ не член-функции внутри класса с методом с тем же