Вот такой чисто теоретический вопрос, навеянный топиком Странная ошибка c шаблоном (или я идиот, или одно из двух)
В C++ одна из особенностей, делающих грамматику контекстно-зависимой — это неоднозначность парсинга выражения
foo<a>(b);
То ли это шаблонная функция foo<a>
, вызываемая с аргументом b
.
То ли это выражение (foo < a) > b
.
Чтобы это понять, компилятор должен иметь доступ к декларации foo
.
Как бы вы сделали эту часть грамматики контекстно-свободной, если бы дизайнили ЯП с нуля? Ваши идеи?