Здравствуйте, WolfHound, Вы писали:
WH>>>Не нужна информация о том, в какой ветке, какой тип. И из какой ветки мы получили управление.
EP>>Почему не нужна?
WH>По тому, что мы уже обработали информацию о ветвлении внутри самого if.
При вызове виртуального метода общего интерфейса (к которому привелись результаты веток) — точно также обрабатывается информация о ветвлении.
Не вижу здесь принципиальной разницы с Variant.
WH>>>По тому, что нужно значение.
EP>>И какой тип у этого значения?
WH>Тот, к которому приводятся типы обеих веток.
И получится в общем случае что-то очень близкое к Object'у
EP>>Что в этом плохого?
WH>То, что это не нужно.
Аргумент
EP>>Почему это хуже, чем вывод общей базы,
WH>Хотя бы по тому что для того чтобы получить данные из этого варианта тебе нужен ещё один точно такой же if.
Во-первых, как уже говорил выше — можно дать возможность получить из Variant'а значение общего типа (то есть текущее поведение).
Во-вторых, при вызове виртуального метода — также происходит индерекция (пусть и другого рода) как и при if.
EP>>которая может быть крайне "слабым" типом вроде IPrintable, а то и вовсе Object.
WH>В немерле Object не выводится. Там специальная закладка на этот счёт есть.
А с IPrintable (или подобным крайне "слабым") как быть?
То есть будут где-то иерархии пересекаться недалеко от Object'а — толку-то?