LINUX.ORG.RU

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

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

Это замена не вызову виртуальных методов, если что, а тупорылой иерархии классов с динамик каст проверками типа или помойке всех свойств в базовом классе. Здесь же:

  1. Изолированные типы, не связаны ни в какие иерархии иине знающие ничего о других
  2. Отсутствие явных кастов к конкретным типам в месте вызова
  3. Можно налагать любые требования на интерфейс объектов в месте вызова.

Замена виртуальному вызову выглядит так

std::visit([](auto&& obj){ obj.foo(); }, obj);

Про то что это тот же самый тег типа внутри класса, это вообще фейспалм.

Что-то в моем варианте нет никаких идиотских тегов внутри классов и идиотских методов as_B() as_C() as_D(), интерфейс каждого класса описывает ровно то что относится к этому классу

Исправление CatsCantFly, :

Это замена не вызову виртуальных методов, если что, а тупорылой иерархии классов с динамик каст проверками типа или помойке всех свойств в базовом классе. Здесь же:

  1. Изолированные типы, не связаны ни в какие иерархии иине знающие ничего о других
  2. Отсутствие явных кастов к конкретным типам в месте вызова
  3. Можно налагать любые требования на интерфейс объектов в месте вызова.

Замена виртуальному вызову выглядит так

std::visit([](auto&& obj){ obj.foo(); }, obj);

Исправление CatsCantFly, :

Это замена не вызову виртуальных методов, если что, а тупорылой иерархии классов с динамик каст проверками типа или помойке всех свойств в базовом классе. Здесь же:

  1. Изолированные типы, не связаны ни в какие иерархии иине знающие ничего о других
  2. Отсутствие явных кастов к конкретным типам в месте вызова
  3. Можно налагать любые требования на интерфейс объектов в месте вызова. Замена виртуальному вызову выглядит так

std::visit([](auto&& obj){ obj.foo(); }, obj);

Исправление CatsCantFly, :

Это замена не вызову виртуальных методов, если что, а тупорылой иерархии классов с динамик каст проверками типа или помойке всех свойств в базовом классе. Здесь же:

  1. Изолированные типы, не связаны ни в какие иерархии иине знающие ничего о других
  2. Отсутствие явных кастов к конкретным типам в месте вызова
  3. Можно налагать любые требования на интерфейс объектов в месте вызова. Замена виртуальному вызову выглядит так [code=c++] std::visit([](auto&& obj){ obj.foo(); }, obj); [/code]

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

Это замена не вызову виртуальных методов, если что, а тупорылой иерархии классов с динамик каст проверками типа или помойке всех свойств в базовом классе. Здесь же:

  1. Изолированные типы, не связаны ни в какие иерархии иине знающие ничего о других
  2. Отсутствие явных кастов к конкретным типам в месте вызова
  3. Можно налагать любые требования на интерфейс объектов в месте вызова.