Или можно как то по другому?
std::variant<char, int, double> my_variant = 42; if (std::holds_alternative<int>(my_variant)) { .... }
У меня в варианте больше двух типов, их там 20
std::variant<int, double, std::string, char, long, float, short, bool, unsigned int, long long, unsigned long, unsigned char, unsigned short, unsigned long long, long double, int*, double*, std::string*, char*, const char*, void*> my_variant = std::string{"abcdef"}; if (std::holds_alternative<std::string>(my_variant)) { std::cout << "has string" << std::endl; }
variant.index();
возможно
В целом выглядит нормально, главное только успокоительное или ещё чего покрепче выпить перед прочтением
Идея std::visit именно в том, чтобы предоставить подсунуть реализации функции для каждого возможного типа, и не разбираться самому, какой именно тип там текущий :) В описании функции на cppreference.com есть хорошие примеры использования.
Да это понятно, мне именно тип нужен был
Обсуждают сегодня