【发布时间】:2014-05-23 12:47:54
【问题描述】:
我们一般都知道sizeof(long) != sizeof(int)。但是 (C++11) 标准的哪些部分不允许别名 long* 到 int*?仅仅是[conv.ptr]中的省略,[basic.lval]中的别名规则,还是其他什么?
void f()
{
static_assert(sizeof(int) == sizeof(long), "");
long x[] = {1, 2};
int* y = x; // error: invalid conversion from ‘long int*’ to ‘int*’ [-fpermissive]
}
【问题讨论】:
标签: c++ c++11 type-conversion language-lawyer type-punning