Есть ли повышение :: посещение как STD :: посещение, для повышения :: вариант? - PullRequest
1 голос
/ 17 мая 2019

В 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 Ответ

1 голос
/ 17 мая 2019

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

...