¿Esto realmente rompe las reglas de alias estricto?

Cuando compilo este código de muestra usando g ++, recibo esta advertencia:

advertencia: desreferenciar el puntero de tipo punteado romperá las reglas de alias estricto[-Wstrict-aliasing]

El código:

#include <iostream>

int main() 
{
   alignas(int) char data[sizeof(int)];
   int *myInt = new (data) int;
   *myInt = 34;

   std::cout << *reinterpret_cast<int*>(data);
}

En este caso, nodata&nbsp;alias an int y, por lo tanto, devolverlo a un int no violaría las estrictas reglas de aliasing? ¿O me estoy perdiendo algo aquí?

Editar: Extraño, cuando definodata&nbsp;Me gusta esto:

alignas(int) char* data = new char[sizeof(int)];

La advertencia del compilador desaparece. ¿La asignación de la pila hace una diferencia con alias estricto? ¿El hecho de que es unchar[]&nbsp;y no unchar*&nbsp;significa que en realidad no puede alias de ningún tipo?