Warum wird die Funktion g()
zuerst aufgerufen? Ich habe g()
als das zweite Element in der Initialisierungsliste definiert.Bewertungsreihenfolge der Elemente in einer Initialisierungsliste
Ist das folgende Zitat aus der Norm zu Initialisiererlisten relevant?
§8.5.4.4: Innerhalb der Initialisierer-Liste einer verspannt-init-Liste, die initializer-Klauseln, jede einschließlich der (§14.5.3) aus Packungs Erweiterungen resultieren, werden in der Reihenfolge ausgewertet in dem sie erscheinen.
#include <iostream>
#include <vector>
int f() { std::cout << "f"; return 0;}
int g() { std::cout << "g"; return 0;}
void h(std::vector<int> v) {}
int main() {
h({f(), g()});
}
Ausgang:
gf
Ihr Code enthält keine Initialisierungslisten. –
Evaluierungsreihenfolge der Funktionsparameter ist in C++ nicht angegeben. – 101010
http://stackoverflow.com/questions/621542/compilers-and-argument-order-of-evaluation-in-c –