Re[13]: Что должен возвращать if?
От: Evgeny.Panasyuk Россия  
Дата: 17.10.14 19:12
Оценка: +1
WH>>>>Не нужна информация о том, в какой ветке, какой тип. И из какой ветки мы получили управление.
EP>>>Почему не нужна?
WH>>По тому, что мы уже обработали информацию о ветвлении внутри самого if.
EP>При вызове виртуального метода общего интерфейса (к которому привелись результаты веток) — точно также обрабатывается информация о ветвлении.
EP>Не вижу здесь принципиальной разницы с Variant.

Я даже больше скажу, теоретически вызов метода содержащегося внутри Variant может иметь абсолютно такой же синтаксис как и вызов виртуального метода:
Variant<Triangle, Rectangle> v = ...;
v.draw();


А вот такой синтаксис можно получить в C++ прям сейчас:
Variant<Triangle, Rectangle> v = ...;
use_concrete_type(v)
{
    v.draw();
};
Причём для всех вызовов внутри фигурных скобок не будет никакого dispatch, так как там у v один из конкретных типов — Triangle или Rectangle.
Dispatch будет только однократный, перед всеми вызовами (в отличии от виртуальных методов, где в общем случае для каждого вызова происходит индерекция).
Отредактировано 17.10.2014 19:13 Evgeny.Panasyuk . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.