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.