Re[5]: std::get(std::variant)
От: landerhigh Пират  
Дата: 23.10.25 19:23
Оценка:
Здравствуйте, Marty, Вы писали:

M>Как-то так:

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


    std::visit([](auto&& t) {
        if constexpr(std::is_same_v(t, Kind::A)) 
        {
        }
        else if constexpr(std::is_same_v(t, Kind::B))
        {
        }
    }, v);




Можно еще и приукрасить, как тут написано.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.