В шаблонах C++ инстанцированы с угловыми скобками , вектор <интервал>
и Java и языки C# принял тот же синтаксис для их дженериков.
создатели D, однако, были довольно красноречивы о проблемах, которые приносят угловые скобки, и они сделали новый синтаксис нечто! (интервал)
— но я никогда не видел слишком много деталей о том, что проблемные угловые скобки приносят, точно.
Один из них был при инстанцировании шаблона с другим шаблоном вектор <вектор <интервал>>
, который вызовет некоторых (более старый?) компиляторы, чтобы перепутать запаздывание'>>' со сдвигом разряда или потоковой передачей операторов. Решение состояло в том, чтобы вставить пробел между этими двумя угловыми скобками, но разве компиляторы не стали способными проанализировать тот синтаксис в наше время?
Другая проблема была при использовании большего - чем нечто оператора <3> 2>
. Синтаксический анализатор думал бы, что оператор на самом деле закрывает шаблонное инстанцирование; фиксация должна была представить круглые скобки нечто <(3> 2)>
. Но я не думаю там, что много чехлов, где необходимо сделать это и, во всяком случае, я должен ввести дополнительные круглые скобки, когда они необходимы, вместо того, чтобы представлять новый синтаксис и всегда необходимость ввести восклицательный знак.
, Что другие проблемы там с угловыми скобками, которые заставили разработчиков D создать новый синтаксис?