Originally Posted by basic.lval
15If a program attempts to access the stored value of an object through
an lvalue of other than one of the following types the behavior is
undefined25):
_________________________
25) The intent of this list is to specify those circumstances in which
an object may or may not be aliased.
--the dynamic type of the object,
--a cv-qualified version of the dynamic type of the object,
--a type that is the signed or unsigned type corresponding to the
dynamic type of the object,
--a type that is the signed or unsigned type corresponding to a cv-
qualified version of the dynamic type of the object,
--an aggregate or union type that includes one of the aforementioned
types among its members (including, recursively, a member of a sub-
aggregate or contained union),
--a type that is a (possibly cv-qualified) base class type of the
dynamic type of the object,
--a char or unsigned char type.