If a program attempts to access (
[defns.access])
the stored value of an object through a glvalue
through which it is not type-accessible,
the behavior is undefined
.
If a program invokes
a defaulted copy/move constructor or copy/move assignment operator
for a union of type
U with a glvalue argument
that does not denote an object of type
cv U within its lifetime,
the behavior is undefined
.