У меня есть тесты, и, кажется, UB не может быть панирует в некоторых комбинированных ошибочно использованный. Я не говорю, что UB в порядке или значит, это ошибка. Однако, если это произойдет, неверный результат труднее отладить, чем паника. < /P>
Код: Выделить всё
struct I {
int get() { return 1; }
};
void f() {
try {
std::optional x = std::nullopt;
printf("%d\n", (*x)->get()); // -----> UB
}
catch (std::bad_optional_access & e) {
printf("it throws in f\n");
}
}
Код: Выделить всё
operator->Подробнее здесь: https://stackoverflow.com/questions/776 ... -not-valid
Мобильная версия