Это то, что я написал в дек. Пятый:
Память, скопированная конструктором exc, была удалена перед копированием. Нарушение прав доступа гарантировано! Я узнал еще одну вещь об этом замечательном языке программирования (что происходит за кулисами, когда вы «бросаете exc (some_deleted_memory)»).
<< конец дек. Пятые >>
Это не настоящая проблема. Настоящая проблема в том, что gcc-компилятор (с параметрами:)
gcc -fexceptions -Wnoexcept -fno-use-cxa-get-exception-ptr -include .\pch.h -g3 *.cpp
-l libstdc++ -o vlb.exe
не любит исключения, которые будут выбрасываться против спецификаций throw () объявлений функций. Когда throw_exception () объявляется как
void throw_exception() throw(const std::exception &);
все хорошо.
Я всегда думал, что (по крайней мере, программные) исключения могут возникать при каждом вызове, и процедура размотки стека должна быть в состоянии справиться с этим. Мне не нравится то, что мне нужно было бы указать, какой тип исключений может оставить функцию для каждой функции, которую я пишу.
Так или иначе, я должен быть в состоянии указать, что любой тип программного исключения может оставить любую функцию, которую я пишу, в командной строке gcc. Но как? Я опубликую новый вопрос для этой новой темы.
Спасибо всем, кто думал обо мне.