Czy wielokrotne mutacje w listach inicjalizujących nie są zdefiniowane?

Ciekawi mnie lista inicjalizacyjna i punkty sekwencji. Czytałem jakiś czas temu, że kolejność oceny na listach inicjalizacyjnych jest od lewej do prawej. Jeśli tak jest, to musi istnieć jakiś punkt sekwencji między punktami oceny, czy się mylę? Czyli z tym jest następujący prawidłowy kod? Czy jest coś, co powoduje w nim niezdefiniowane zachowanie?

int i = 0;

struct S {
    S(...) {} 
    operator int() { return i; }
};

int main() {
    i = S{++i, ++i};
}

Wszystkie odpowiedzi są mile widziane.

questionAnswers(2)

yourAnswerToTheQuestion