In [dcl.ambig.res]/2 we find the following:
void foo(signed char a) {
sizeof(int(a)); // expression
sizeof(int(unsigned(a))); // type-id (ill-formed)
}
Why is int(a)
an expression and int(unsigned(a))
a type-id?
At first sight I would say that both are expressions.