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

Ale*_*der 7 c++ language-lawyer

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

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

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

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

Jus*_*tin 8

int(unsigned(a))解析与int(unsigned a)函数类型相同

  • 现在看_this_是最令人烦恼的解析. (3认同)