Рассмотрим следующий фрагмент кода
typedef int type;
int main()
{
type *type; // why is it allowed?
type *k ;// which type?
}
Я получаю сообщение об ошибке 'k' is not declared in this scope. Компилятор анализирует type *k как умножение между type* и k. Разве эта грамматика не очень запутанна?
Почему type *type разрешен стандартом С++? Потому что грамматика так говорит? Почему?