В нашем производственном коде мы широко используем коллекции boost :: option.Мы извлекаем значения из этой коллекции следующим образом:
for (auto & var : vars)
{
switch (var.which())
{
case 1 :
AVal = boost::get<A>(var);
break;
case 2 :
BVal = boost::get<B> (var);
...
}
}
Читая больше о вариантах, я вижу, что другой альтернативой будет
for (auto & var : vars)
{
switch (var.which())
{
case 1 :
AVal = boost::apply_visitor(AVisitor, var);
break;
case 2 :
BVal = boost::apply_visitor(BVisitor, var);
...
}
}
Игнорирование того факта, что apply_visitor предоставляет тип времени компиляцииПосещение безопасного значения и является более мощным, следует ли ожидать каких-либо различий с точки зрения производительности во время выполнения для любого из вышеуказанных подходов?