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

R>Да прям уж куча:


Именно что куча


R>https://coliru.stacked-crooked.com/a/3bf34d7526b1245c


R>
R>    std::visit([](auto&& t) {
R>        std::cout << "Тут лежит " << t << std::endl;
R>    }, v);
R>


R>А как бы ты хотел чтоб это выглядело? Можешь примерчик набросать?


Как-то так:
int func(MyVariant v)
{
    auto kind = getKind(v);
    if (kind==Kind::A)
    {
        doSomething(get<Kind::A>(v));
        // doSomething(get(kind, v)); // или даже так
    }
    else if (kind==Kind::B || kind==Kind::C)
    {
        log << "Error: " << enum_serialize(kind) << " not allowed here\n";
        return -1; // error - B or C not allowed here
    }
    else
    {
        return 0; // OK
    }

    //...

}


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

Или switch(kind) сделать, или ещё что
Маньяк Робокряк колесит по городу
Отредактировано 23.10.2025 20:00 Marty . Предыдущая версия . Еще …
Отредактировано 23.10.2025 19:18 Marty . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.