Qual é o objetivo de uma declaração como int (x); ou int (x) = 10;
Se você olhar para a gramática*declarator*s in §8/4
você notará que umnoptr-declarator
pode ser escrito como (ptr-declarator
), ou seja, pode ser escrito como (declarator-id
), que valida declarações como as do título. De fato, esse código é compilado sem problemas:
#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}
Masqual é o objetivo de permitir esses parênteses quando um ponteiro (para uma matriz ou função) não está envolvido na declaração?