Sind mehrere Mutationen innerhalb der Initialisierungslisten undefiniert?
Ich bin neugierig auf Initialisiererlisten und Sequenzpunkte. Ich habe vor einiger Zeit gelesen, dass die Reihenfolge der Auswertung in den Initialisierungslisten von links nach rechts ist. Wenn dem so ist, dann muss es eine Art Sequenzpunkt zwischen den Bewertungspunkten geben, irre ich mich? Also ist der folgende Code gültig? Gibt es irgendetwas, das undefiniertes Verhalten verursacht?
int i = 0;
struct S {
S(...) {}
operator int() { return i; }
};
int main() {
i = S{++i, ++i};
}
Alle Antworten sind willkommen.