Есть ли повышение :: посещение как STD :: посещение, для повышения :: вариант?

В 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 , но я нахожу это громоздким. Есть ли boost::visit как std::visit которое я пропускаю? Если нет, то почему его не существует?

Минимальный пример здесь .

Всего 1 ответ


Есть, но это называется boost::apply_visitor . Его поведение по отношению к boost::variant - это как std::visit для std::variant .


Есть идеи?

10000