LINUX.ORG.RU

История изменений

Исправление CatsCantFly, (текущая версия) :

Касты исчезли из пользовательского кода в код внутренностей стандартной библиотеки и инстанцирования шаблонов == кастов в пользовательском прикладном коде нет. Соответственно, он не ломается от расширения числа обобщаемых классов, в отличие от портянки if-ов с динамик кастом к каждому конкретному типу

  • При каждом расширении придется дописать к Object еще один тип. Вот и все накладные расходы (учитывая, что мы говорим все еще о классах, которые нельзя обобщить общим интерфейсом - вы же полезете добавлять еще одну проверку в простыню динамик кастов)
  • Все совместимо, функция в визиторе принимает любой тип
  • Если бы я хотел, я бы написал там else. Причем тут подход?

Исходная версия CatsCantFly, :

Касты исчезли из пользовательского кода в код внутренностей стандартной библиотеки и инстанцирования шаблонов == кастов в пользовательском прикладном коде нет. Соответственно, он не ломается от расширения числа обобщаемых классов, в отличие от портянки if-ов с динамик кастом к каждому конкретному типу

1. При каждом расширении придется дописать к Object еще один тип. Вот и все накладные расходы (учитывая, что мы говорим все еще о классах, которые нельзя обобщить общим интерфейсом - вы же полезете добавлять еще одну проверку в простыню динамик кастов) 2. Все совместимо, функция в визиторе принимает любой тип 3. Если бы я хотел, я бы написал там else. Причем тут подход?