Если вы посмотрите на грамматику для *declarator*s in §8/4
, вы заметите, что 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';
}
Но для чего нужны эти круглые скобки, когда указатель (на массив или на функцию) не участвует в объявлении?
(42)
является допустимым выражением, даже если скобки не нужны. - person Keith Thompson   schedule 10.11.2014