вызов функций выше их декларации
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()
{
}
};
В чем причина этого несоответствия обработки вызовов функций выше их декларации? Почему я могу сделать это внутри класса, но не внутри пространства имен или в глобальной области видимости?