Здравствуйте, byleas, Вы писали:
K>> Не кидать исключения за пределы своего модуля
B>Почему?
Потому что "на той стороне" его должны обработать (как минимум, размотать стек).
Во-первых, исключение могут поймать. И это даёт почву для нарушения ODR — например, ты кидаешь std::logic_error, объявленный в твоей версии STL — а там ловят std::logic_error, объявленный в другой версии STL. Разные лэяуты, и привет.
Во-вторых, если тот код не собирается обрабатывать исключения (трактует твою функцию как не бросающую; а для extern"C"-функций есть такая опция компилятора), — это ситуация UB или terminate, сейчас затруднюсь сказать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>