为什么int(a)是一个表达式而int(unsigned(a))在下面的例子中是一个type-id?

时间:2018-03-28 22:05:56

标签: c++ language-lawyer

[dcl.ambig.res]/2中,我们发现以下内容:

void foo(signed char a) {
    sizeof(int(a)); // expression
    sizeof(int(unsigned(a))); // type-id (ill-formed)
}

为什么int(a)是表达式而int(unsigned(a))是类型ID?

乍一看,我会说两者都是表达。

1 个答案:

答案 0 :(得分:8)

int(unsigned(a))的解析方式与int(unsigned a)相同,后者是函数类型