我无法理解报价(特别是粗体部分):
“指向 cv1 void 的指针”类型的纯右值可以转换为“指向 cv2 T 的指针”类型的纯右值,其中 T 是对象类型,而 cv2 与 cv1 具有相同的 cv 限定或大于 cv1 的 cv 限定。如果原始指针值表示内存中一个字节的地址A,并且A不满足T的对齐要求,则结果指针值未指定。
int i = 0;
void *vp = &i;
auto *res = static_cast<double*>(vp);
我的问题是:
res
(address of )所指向的地址是否int
满足 的对齐要求double
?结果指针
res
是否具有未指定的值?当我有这样的事情时:类型不比目标类型更严格
static_cast<double*>(static_cast<void *>(&i))
吗?所以这个表达式的结果不是未指定的i
double