Лишь спустя 20+ лет опыта я осознал, что всё это время писал неправильный hello-world.
А вот правильно будет как-то так:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return std::cout ? 0 : 1;
}
Пояснения на ангельском
UPD: Как указал finder есть ещё такой вариант
#include <iostream>
int main() {
std::cout.exceptions(std::cout.badbit);
std::cout << "Hello, World!" << std::endl;
return EXIT_SUCCESS;
}
Вот это мощь :)
Ситуация напоминает std::bad_alloc, с которым вообще совсем полностью непонятно, что делать, мозг взрывается.
ответить
Дякую тобі, Боже, що я не сишник!
ответить
Учи плюсы, говорили они, удобно писать на них всякое, говорили они, в UB нет ничего страшного, говорили они, плюсы не топ-1 причина багов, говорили они
ответить
Нет, правда, а как так? Я еще чуть почитал вокруг и конкретно в плюсах это выглядит буквально как бага проектирования стандартной библиотеки: std::cout по умолчанию настроен так, что при рядовых ошибках не кидает исключений. При этом переключатель "кидать или нет" все равно существует, почему его по умолчанию не поставить в безопасное положение-то.
ответить