Llamando funciones por encima de su declaración.
void foo()
{
bar(); // error: ‘bar’ has not been declared
}
void bar()
{
}
namespace N
{
void foo()
{
N::bar(); // error: ‘bar’ is not a member of ‘N’
}
void bar()
{
}
}
class C
{
static void foo()
{
C::bar(); // works just fine
}
static void bar()
{
}
};
¿Cuál es la razón detrás de esta inconsistencia en el tratamiento de llamadas a funciones por encima de su declaración? ¿Por qué puedo hacerlo dentro de una clase, pero no dentro de un espacio de nombres o en el ámbito global?