nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Auswertereihenfolge bei Funktionsaufruf

Von: Hubert Schmid (417ubojyp3w3un1l@expire.z42.de) [Profil]
Datum: 19.06.2008 09:43
Message-ID: <85ej6tamzu.fsf@sid.ue.schlund.de>
Newsgroup: de.comp.lang.iso-c++
Hallo,

ich habe eine sehr spezielle Frage zur Auswertereihenfolge beim
Funktionsaufruf. Ich dachte, ich hätte die Frage schon einmal in
dieser Newsgroup gestellt, konnte aber nichts dazu finden. Es gebt um
folgendes Konstrukt:

postfix-expression ( [ expression-list ] )

Laut 5.2.2(8) ist die Auswertereihenfolge der postfix-expression und
der (argument-)expression-list unspezifiziert. Ich kann allerdings
nichts dazu finden, wann die Initialisierung der Funktionsparameter
erfolgt. Ich vermute, dass diese in der Auswertung der Argumente
implizit dabei ist, bin mir aber nicht sicher. Ich möchte wissen, ob
garantiert ist, dass die Parameter erst nach Auswertung der
postfix-expression initialisiert werden.

Das konkrete Beispiel zu dieser Frage sieht so aus:

struct foo
{
void run(std::auto_ptr<foo> self);
};

int main()
{
std::auto_ptr<foo> bar(new foo);
bar->run(bar);
}

Ist dieser Code korrekt, das heißt wird bar als postfix-expression
ausgewertet, bevor es als Parameter kopiert wird?

Gruß, Hubert

[ Auf dieses Posting antworten ]

Antworten