Comportamiento indefinido en el uso repetido del operador prefijo ++

Leo estoresponder sobre comportamiento indefinido, donde vi la siguiente declaración:

++++++i;     // UB, parsed as (++(++(++i)))

No creo que sea un comportamiento indefinido. Tengo una duda, ¿es realmente UB en C ++? ¿Si es así, entonces cómo?

Además, hice un programa y lo compilé usandog++ prog.cpp -Wall -Wextra -std=gnu++1z -pedantic comando, funciona bien sin previo aviso. Es dar una salida esperada.

#include <iostream>
using namespace std;

int main()
{
    int i = 0;
    cout<<++++++i<<endl;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta