C++20. Что произойдёт при запуске?
#include <iostream>
#include <string>
#include <variant>
int main() {
std::variant<int, std::string> v = 7;
auto* text = std::get_if<std::string>(&v);
auto* number = std::get_if<int>(&v);
std::cout << std::boolalpha << (text == nullptr)
<< ' ' << *number;
}👾 — false 7
👍 — true 7
🥰 — Исключение bad_variant_access
⚡️ — Ошибка компиляции
Ответ: 👍 — true 7.
Сейчас variant хранит int. get_if<string> возвращает nullptr, а get_if<int> — указатель на число 7. Проверка text не разыменовывает нулевой указатель.
Документация
➡️ Навигация: База знаний • Задачи • Собеседования • Вакансии
🐸 Библиотека программиста