The rule says that if a construct is an ambiguous syntax for a declaration or statement, then it is considered to be a declaration.
[stmt.ambig] 1 , - : - (5.2.3), indis- , (. .
X(X()); , , , .
int(int()); , int, , . , , .
, I(I()); , , , I , I , , .