在C++ 标准草案 N3337第5.2.10节Reinterpret cast
第 7节(强调我的)中:
对象指针可以显式转换为指向不同类型的对象指针。当“指向 T1 的指针”类型的纯右值 v转换为“指向 cv T2 的指针”类型时,结果是
static_cast<cv T2*>(static_cast<cv void*>(v))
如果 T1 和 T2 都是标准布局类型(3.9)并且 T2 的对齐要求不比那些更严格T1 的,或者如果任一类型为无效。
这是否意味着表达式v
是纯右值?如果是这样,那么
int a = 0x1234;
int *pa = &a;
char *pc = reinterpret_cast<char *>(pa);
上面,变量pa
是 an lvalue
,那么我们可以认为如果变量 oflvalue
在正确的表达式中,变量是 aprvalue
类型的吗?