Здравствуйте, sergey2b, Вы писали:
S>функция возращает std::variant варианты которого определенные мной классы S>подскажите пожалуйста как проверить что функция вернула не пустое значение std::variant
Никак не надо, она не должна такое возвращать. Вариант может быть "пустым" только из-за исключения. Если функция внутри ловит исключение, то возвращать должна валидный вариант. Если не ловит, то ты должен ловить.
Если тебе нужно валидное пустое значение, то std::monostate
Здравствуйте, sergey2b, Вы писали:
S>функция возращает std::variant варианты которого определенные мной классы S>подскажите пожалуйста как проверить что функция вернула не пустое значение std::variant
Добавить пустой вариант std::monostate, причём желательно — первым в списке, чтобы дефолтный конструктор был с дефолтным же типом.
Но если тип варианта приколочен гвоздями, — тогда либо заворачивать в std::optional, либо никак.
Либо же договориться, что у твоего варианта один или несколько типов имеют сигнальные "пустые" значения.
Ну грубо говоря
using V = std::variant<std::string, int>;
V v = get_v();
bool is_empty = std::holds_alternative<std::string>(v) && std::get<std::string>(v).empty();
bool is_zero = std::holds_alternative<int>(v) && !std::get<int>(v);
// или даже вот такbool is_some_default = std::visit([](auto&& x) { using T = std::remove_cvref_t<decltype(x)>; return x == T{}; }, v)
Здравствуйте, sergey2b, Вы писали:
S>функция возращает std::variant варианты которого определенные мной классы S>подскажите пожалуйста как проверить что функция вернула не пустое значение std::variant
Ну, это ещё нужно постараться, чтоб получить такой объект std::variant.
Здравствуйте, sergey2b, Вы писали:
S>функция возращает std::variant варианты которого определенные мной классы S>подскажите пожалуйста как проверить что функция вернула не пустое значение std::variant
не знаю конечно зачем, но похоже если variant пустой, то это уже странное поведение программы. А если надо явно проверять на пустоту, то лучше кмк, как уже писали, monostate или optional.
функция возращает std::variant варианты которого определенные мной классы
подскажите пожалуйста как проверить что функция вернула не пустое значение std::variant
Здравствуйте, Великий Реверс, Вы писали:
ВР>именно на тот ВР>просто ты хочешь посчитать ВР>а люди советуют забить пустотой ВР>для этого моностеит и предусмотрен
функция возращает std::variant варианты которого определенные мной классы
подскажите пожалуйста как проверить что функция вернула не пустое значение std::variant
Ты предлагаешь обходной манёвр, а не даёшь прямой ответ на вопрос. Можно было хотя бы поинтересоваться, приемлемо ли для него использование std::monostate.
Как бы то ни было, здесь и близко нет повода, чтобы отвечать в твоей обычной хамской манере "через губу". Ты кем себя возомнил?
--
Справедливость выше закона. А человечность выше справедливости.