Aufruffunktionen über ihrer Deklaration

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()
    {
    }
};

Was ist der Grund für diese Inkonsistenz bei der Behandlung von Aufrufen zu Funktionen oberhalb ihrer Deklaration? Wie kann ich das in einer Klasse tun, aber nicht in einem Namespace oder in einem globalen Bereich?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage