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()
{
}
};
宣言を超えて関数呼び出しを処理するこの矛盾の背後にある理論的根拠は何ですか? 名前空間やグローバル スコープではなく、クラス内で実行できるのはなぜですか?