Рассмотрим следующий фрагмент кода
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
разрешен стандартом С++? Потому что грамматика так говорит? Почему?