В C++14 я использую boost::variant
как способ полиморфизма времени компиляции:
using MyType = boost::variant<A, B>;
Оба класса имеют метод sayHello()
. Я хотел бы позвонить:
MyType obj = ...; // either A() or B()
boost::visit([](auto&& o) { o.sayHello();}, obj);
Я знаю способ static_visitor
, но считаю его громоздким . Есть ли что-то вроде std::visit
, которое я упустил? Если нет, то почему его не существует?
Минимальный пример здесь.