Технически в C ++ правило строгого алиасинга, вероятно, никогда не применяется.
Обратите внимание на определение косвенности (* оператор ):
Унарный * оператор выполняет косвенное выражение: выражение, к которому он относится
применяется указатель на тип объекта или указатель на
тип функции и результат - lvalue, ссылающийся на объект или
функция , на которую указывает выражение .
Также из определение glvalue
glvalue - это выражение, оценка которого определяет идентичность
объект, (... отрываться)
Таким образом, в любой четко определенной программной трассировке glvalue ссылается на объект. Так что так называемое правило строгого наложения не применяется никогда. Возможно, это не то, что хотели дизайнеры.