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