AS>>С т.з. VC __declspec(nothrow) говорит не о том, что функция не будет выбрасывать исключений для внешнего кода (что можно проверить, указав это для функции и убедиться, что код обработки исключений из внешнего кода не исчезает), а о том, что внутри функции не выбрасываются исключения, если иное не следует явно. И внутри функции, промаркированной как throw() как раз код обработки исключений в этом случае отсутствует.
PD>Да, ты прав. Но это не отменяет того, что я сказал — выбрасывать SEH исключения она все равно может.
Так вопрос то в другом — как убедить компилятор, что C++ исключений быть не может и SEH фрейм, который он делает только для этого, тут не нужен.
>>gcc же, напротив, по спецификатору noexcept считает во внешнем коде, что вызываемая функция не кидает исключений и убирает обработчик из внешнего кода.