Здравствуйте!
Программа собирается с помощью CMake. Одна из целевых ОС - Windows. Реализована следующая фабрика:
Base* load(const char* filename) {
try {return new Derived1(filename);} catch (...) {}
try {return new Derived2(filename);} catch (...) {}
try {return new Derived3(filename);} catch (...) {}
try {return new Derived4(filename);} catch (...) {}
try {return new Derived5(filename);} catch (...) {}
try {return new Derived6(filename);} catch (...) {}
throw std::runtime_error(std::string("Couldn't load file: ") + filename);
}
При кросскомпиляции с помощью MinGW возникает следующая проблема: исключение, поднятое в конструкторе Derived1 не ловится try...catch. При сборке для linux всё работает. Проблема присутствует при всех вариантах CMAKE_BUILD_TYPE. В качестве дополнительных ключей компилятору задавались только: -Wall -Wextra
Debian Oldstable, софт из оф. репозитория.