This code should be an error:
void foo(int);
void f3() {
int foo(float);
{
float foo(int); // expected-error {{functions that differ only in their return type cannot be overloaded}}
}
}the foo(float) function declared at function scope should not hide the float(int) while trying to redeclare functions.