Если вы посмотрите на грамматику для *declarator*s in §8/4
, вы заметите, что a noptr-declarator
может быть записано как (ptr-declarator
), то есть оно может быть записано как (declarator-id
), которое проверяет объявления как те, что указаны в названии. Фактически этот код компилируется без проблем:
#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}
Но в чем заключается назначение разрешать эти круглые скобки, когда указатель (на массив или на функцию) не участвует в объявлении?