История изменений
Исправление alysnix, (текущая версия) :
using Object = std::variant<Printer, Scanner, Foo>;
это хранение с тегом типа, о чем я и говорил. только спрятанное в мега_типа_крутой темплейт.
потом по тегу динамически выбирается правильный вариант call. по сути это вызов «виртуального метода» через задний проход, только больше по коду и совершенно нечитабельно.
и не только больше по коду, но и медленней. поскольку там будет динамически определяться вызываемый метод, а в случае нормальных виртуальных функций, будет вызов через таблицу вирт методов, что есть две команды проца.
и потом . для принтера и сканера в одном флаконе команда и принтанет и отсканит за один вызов… но зачем такое надо непонятно. или принтить или сканить оно должно
Исправление alysnix, :
using Object = std::variant<Printer, Scanner, Foo>;
это хранение с тегом типа, о чем я и говорил. только спрятанное в мега_типа_крутой темплейт.
потом по тегу динамически выбирается правильный вариант call. по сути это вызов «виртуального метода» через задний проход, только больше по коду и совершенно нечитабельно.
и не только больше по коду, но и медленней. поскольку там будет динамически определяться вызываемый метод, а в случае нормальных виртуальных функций, будет вызов через таблицу вирт методов, что есть две команды проца.
Исходная версия alysnix, :
using Object = std::variant<Printer, Scanner, Foo>;
это хранение с тегом типа, о чем я и говорил. только спрятанное в мега_типа_крутой темплейт.
потом по тегу динамически выбирается правильный вариант call. по сути это вызов «виртуального метода» через задний проход, только больше по коду и совершенно нечитабельно.