Re[11]: std::get(std::variant)
От: rg45 СССР  
Дата: 23.10.25 20:36
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, rg45, Вы писали:


R>>Ну вот этот
Автор: Marty
Дата: 23.10 22:11
твой пример, без особого труда мог бы выглятеть как-то вот так:


R>>
R>>void func(MyVariant v)
R>>{
R>>  return MyVisit(v,    
R>>    [](const A& a) {
R>>      doSomething(a);
R>>      return 1;
R>>    },
R>>    [](const AnyTypeOfList<B, C> auto&) {
R>>      log << "Error: B or C not allowed here not allowed here\n";
R>>      return -1;
R>>    },
R>>    [](const auto&) {
R>>      return 0; // OK
R>>    }
R>>  );
R>>}
R>>


M>А как выглядит MyVisit?


Эскизно примерно вот так:

decltype(auto) MyVisit(auto&& t, Callable auto&&...f)
{
   return std::visit(Overloaded(f...), v);
}
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.