Re[6]: std::get(std::variant)
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.10.25 19:59
Оценка:
Здравствуйте, rg45, Вы писали:

M>>Просто и понятно.


R>Ну и чем это проще и понятнее, чем:


R>https://coliru.stacked-crooked.com/a/83124dc3a3facc5d


R>
R>int func(MyVariant v)
R>{
R>    return std::visit([]<typename T>(const T& t) {
R>        if constexpr (std::same_as<T, A>)
R>        {
R>            doSomething(t);
R>        }
R>        else if constexpr (std::same_as<T, B> or std::same_as<T, C>)
R>        {
R>            std::cout << "Error: B or C not allowed here\n";
R>            return -1;
R>        }
R>        return 0; // OK
R>    }, v);
R>}
R>


в ветке doSomething(t); я не хочу выходить из func. Надо было там написать после if продолжение кода — //.... Поправлю для остальных


R>И это не единственный, и не лучший, кстати, вариант использования — тут на перегрузках можно реально по красоте всё сделать.


R>И я привёл законченный работающий пример, а тебе ещё нужно наколбасить энумов к своим вариантам. В итоге нифига не проще будет, а будет реально куча.


Генератор

А можно в рантайме, в какой-нибудь другой подсистеме, сформировать список альтернатив, которые нужно обработать, и передать в обработчик вместе с variant'ом?
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.