third_party_function
обещает не генерировать никаких исключений.
Таким образом, любое исключение типа int
или std::exception
не имеет значения, вызывает вызов std::terminate
для каждого C++ 98 §15.5.2 / 2.
Если бы вместо этого он ограничился std::bad_exception
, то при соответствующей реализации новое исключение будет автоматически переведено в std::bad_exception
.
В текущем стандарте C ++ 11 использование такого рода спецификации исключений с использованием ключевого слова throw
не рекомендуется.
C ++ 11, однако, имеет ту же формулировку, что и C ++ 98 относительноэффект, в C ++ 11 §15.5.2 / 3.
Также обратите внимание, что хотя Visual C ++ допускает синтаксис, он никогда не учитывал семантику (за исключением, возможно, nothrow, который теперь задокументирован как эквивалентный).к использованию языкового расширения, которое не говорит об исключениях).
Таким образом, несмотря на то, что оно все еще действует в стандарте C ++, на практике оно непереносимо, если для спецификаций исключений используется какой-либо конкретный эффект, кроме nothrow.
Cheers & hth.,