Was ist der Zweck einer Deklaration wie int (x); oder int (x) = 10;
Wenn Sie sich die Grammatik für @ anseh*declarator*s in §8/4
Sie werden feststellen, dass einnoptr-declarator
kann geschrieben werden als ptr-declarator
), das heißt, es kann geschrieben werden als declarator-id
), das Deklarationen wie die im Titel validiert. Tatsächlich kompiliert dieser Code problemlos:
#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}
Aberwas ist der Zweck, diese Klammern zuzulassen Wenn ein Zeiger (auf ein Array oder eine Funktion) nicht an der Deklaration beteiligt ist?