В следующем коде переменная "ex" на основе стека выбрасывается и попадает в функцию, выходящую за пределы области, в которой был объявлен ex. Мне это кажется немного странным, поскольку переменные стека (AFAIK) не могут использоваться вне области, в которой они были объявлены (стек разворачивается).
void f() {
SomeKindOfException ex(...);
throw ex;
}
void g() {
try {
f();
} catch (SomeKindOfException& ex) {
//Handling code...
}
}
Я добавил инструкцию print для дескриптора SomeKindOfException, и он показывает, что ex разрушен, когда он выходит из области видимости в f(), но затем он попадает в g () и снова разрушается после того, как он выходит из области видимости,
Любая помощь?