¿Se puede obtener un puntero a un elemento de representación de objeto completo de un puntero a un subojeto?

Consideremos este código:

int i;
int is[10]{};

unsigned char * p = reinterpret_cast<unsigned char*>(&i);
//p defined to point to the object-representation of the first element of array ints
unsigned char * ps = reinterpret_cast<unsigned char*>(&is[0]);

p += sizeof(int);
ps += sizeof(int);
//now ps points to the end of ints[0] and p point to the end of i;

p += sizeof(int); //Undefined behavior according to [expr.add]

ps += sizeof(int); //Undefined behavior?
unsigned char c = *ps;//Undefined behavior?

Si consideramos esops apunta a larepresentación de objeto deis[0] entonces, según la regla aritmética del puntero, el comportamiento no está definido en las dos últimas líneas de código.

Sin embargo, sips también es un puntero a larepresentación de objeto de la matriz de intis El comportamiento está definido.

Entonces mi pregunta es: ¿un puntero a larepresentación de objeto de unsuboject también es un puntero a un elemento de larepresentación de objeto del objeto completo que contiene?

Respuestas a la pregunta(2)

Su respuesta a la pregunta