¿Las mutaciones múltiples dentro de las listas del inicializador no están definidas?

Tengo curiosidad por las listas de inicialización y puntos de secuencia. Hace un tiempo leí que el orden de la evaluación en las listas de inicialización es de izquierda a derecha. Si eso es así, entonces debe haber algún tipo de punto de secuencia entre los puntos de evaluación, ¿me equivoco? Así que con eso dicho es el siguiente código válido? ¿Hay algo que cause un comportamiento indefinido en él?

int i = 0;

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

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

Cualquier y todas las respuestas son apreciadas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta