来自 [5.3.3/1] ,我发现:
The sizeof operator shall not be applied to an expression that has function or incomplete type
来自 [3.9/5]我发现:
Incompletely-defined object types and cv void are incomplete types
无论如何,对于 sizeof
不评估它的操作数,我会说 sizeof(void())
是一个合法的表达式(实际上是 GCC 编译它和结果是1)。
另一边,来自 here , 在讨论 sizeof
时没有提到 void
,既没有提到大小为 1 的类型,也没有在具有 实现定义的列表中 大小。
因此问题是:sizeof(void())
是否合法?
是否保证 size 等于 1?
或者它是导致 UB 的合法表达,仅此而已?
最佳答案
void()
是一个函数类型(它是一个不带参数也不返回任何内容的函数),所以它在 sizeof()
中不是一个有效的类型。
关于c++ - sizeof(void()) 是合法的表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39278200/