Функция без возврата в C++
Атрибут noreturn обещает, что
управление из функции не вернется обычным
return в вызывающий код.
Типичный безопасный случай - бросить
исключение и поймать его выше по стеку.
Объявим такую функцию, вызовем из main
и обработаем ошибку:
#include <iostream>
#include <stdexcept>
[[noreturn]] void stop() {
throw std::runtime_error("stop");
}
int main() {
try {
stop();
} catch (const std::runtime_error&) {
std::cout << "caught\n";
}
return 0;
}
Объявите [[noreturn]] void fail,
бросающую std::runtime_error
с текстом "fail". Поймайте
ее в main и выведите "done".