Предоставляет ли стандарт С++ добавление двух целых чисел (фундаментальный тип int), чтобы выбросить исключение С++?
Разрешает ли Стандарт?
Я не думаю, что это так. Кто-то делает. Мне нужны умные люди, чтобы доказать, что он не прав.
Ответ 1
Да, да. Переполнение значащих целых чисел - это поведение undefined, поэтому может случиться что угодно (включая исключение).
В качестве побочного примечания, я должен сказать, что это вряд ли произойдет (хотя и определенно возможно) для большинства реализаций; как стандарт С++ 11 упоминает в примечании к пункту 5/4:
Если во время оценки выражения результат не определяется математически или нет в диапазоне представляемые значения для его типа, поведение undefined. [ Примечание: большинство существующих реализаций С++ игнорировать целые переполнения. Обработка деления на ноль, формирование остатка с использованием делителя нуля и все исключения с плавающей запятой различаются между машинами и обычно регулируются библиотечной функцией. -end note]
Однако, как упоминает hvd в комментариях, некоторые реализации позволяют предоставлять настраиваемые обработчики для переполнения целого числа, и эти обработчики могут бросать.
Ответ 2
Эмпирическое правило - это то, что может быть написано на C, не может и не должно генерировать исключение...
Следовательно, это не так.
Как говорит Энди, это поведение undefined, поэтому все может случиться. Теоретически компьютер также мог бы сделать вам чашку кофе и отвезти собаку на прогулку. Однако, если бы вы были на собеседовании, я бы предложил вам сказать им: "