A const volatile object is an object of type
constvolatile T, a non-mutable subobject of a const volatile object,
a const subobject of a volatile object, or a non-mutable volatile
subobject of a const object.
The cv-qualified or
cv-unqualified versions of a type
are distinct types; however, they shall have the same representation and
alignment requirements ([basic.align]).40