Стандарт ISO 1998 С++ указывает, что явно не использовать оператор return в основном эквивалентно использованию return 0.
Но что, если в реализации есть другой стандартный код "без ошибок", например -1?
Почему бы не использовать стандартный макрос EXIT_SUCCESS, который будет заменен либо на 0, либо -1, либо на любое другое значение в зависимости от реализации?
С++, похоже, заставляет семантику программы, которая не является ролью языка, который должен описывать только поведение программы. Кроме того, ситуация отличается от возвращаемого значения "error": только EXIT_FAILURE является стандартным флагом завершения ошибки, без явного значения, например, "1".
Каковы причины этих выборов?
