Что все проблемы синтаксиса представлены использованием угловых скобок в шаблонах C++?

В шаблонах C++ инстанцированы с угловыми скобками , вектор <интервал> и Java и языки C# принял тот же синтаксис для их дженериков.

создатели D, однако, были довольно красноречивы о проблемах, которые приносят угловые скобки, и они сделали новый синтаксис нечто! (интервал) — но я никогда не видел слишком много деталей о том, что проблемные угловые скобки приносят, точно.

Один из них был при инстанцировании шаблона с другим шаблоном вектор <вектор <интервал>> , который вызовет некоторых (более старый?) компиляторы, чтобы перепутать запаздывание'>>' со сдвигом разряда или потоковой передачей операторов. Решение состояло в том, чтобы вставить пробел между этими двумя угловыми скобками, но разве компиляторы не стали способными проанализировать тот синтаксис в наше время?

Другая проблема была при использовании большего - чем нечто оператора <3> 2> . Синтаксический анализатор думал бы, что оператор на самом деле закрывает шаблонное инстанцирование; фиксация должна была представить круглые скобки нечто <(3> 2)> . Но я не думаю там, что много чехлов, где необходимо сделать это и, во всяком случае, я должен ввести дополнительные круглые скобки, когда они необходимы, вместо того, чтобы представлять новый синтаксис и всегда необходимость ввести восклицательный знак.

, Что другие проблемы там с угловыми скобками, которые заставили разработчиков D создать новый синтаксис?

29
задан Ciro Santilli 新疆改造中心法轮功六四事件 9 May 2016 в 19:03
поделиться