Здравствуйте, WolfHound, Вы писали:
WH>И зачем ради этого вводить специальную конструкцию в язык?
А зачем вводить в язык оператор switch (или CASE) если его можно эмулировать с помощью цепочки if-else?
А зачем вводить в язык несколько циклов WHILE, REPEAT, FOR, LOOP если достаточно одного?
Это нужно для написания более оптимальных программ.
В обероне WITH — это тот же самый CASE но только CASE — работает с перечислимыми типами, а WITH работает со внутренним тегом в котором зашифрована RTTI информация о динамическом типе полиморфной переменной. Теоретически (я не проверял) WITH должен работать быстрее чем цепочка dynamic_cast-ов, равно как swith теоретически должен работать быстрее цепочки if-else. Плюс к этому — большая структуризация текста программы.