Múltiplas mutações dentro de listas de inicializadores são comportamentos indefinidos?

Estou curioso sobre listas de inicializadores e pontos de sequência. Eu li há algum tempo que a ordem de avaliação nas listas de inicializadores é da esquerda para a direita. Se é assim, então deve haver algum tipo de ponto de seqüência entre os pontos de avaliação, estou errado? Então, com isso dito é o seguinte código válido? Existe alguma coisa que causa um comportamento indefinido nisso?

int i = 0;

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

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

Qualquer e todas as respostas são apreciadas.

questionAnswers(2)

yourAnswerToTheQuestion