Мягкое чтение через std::get_if в C++
Жесткий get не всегда удобен, когда тип еще не проверен.
Функция get_if возвращает указатель на значение
нужного типа или nullptr, если тип другой.
Запишем variant с числом, возьмем указатель на int
и выведем число через него:
#include <variant>
std::variant<int, std::string> cell = 4;
if (int* p = std::get_if<int>(&cell)) {
std::cout << *p << "\n";
}
На экран попадает 4 - указатель не нулевой,
значит внутри действительно целое.
Создайте std::variant<int, double> val
с числом 1.5. Если «функция get_if» для
double не nullptr, выведите
разыменованное значение.