Есть ли проблема с выбросом объекта, созданного в стеке в блоке try, по неконстантной ссылке, его перехватом и изменением, а затем выбросом по ссылке на другой блок catch?
Ниже приводится краткий пример того, о чем я говорю.
struct EC {
EC(string msg) { what = msg; }
string where;
string what;
void app(string& t) { where += t; }
string get() { return what; }
};
try {
try {
try {
EC error("Test");
throw error;
}
catch (EC& e) {
e.app("1");
throw e;
}
}
catch (EC& e) {
e.app("2");
throw e;
}
}
catch (EC& e) {
e.app("3");
cout << e.where << endl;
cout << e.get() << endl;
}
Возможно ли, что это может привести к тому, что е. Что будет содержать мусор, а е. Место останется нетронутым? Например:
e.where is "123"
e.get () возвращает много мусорных данных, пока не попадет в нулевой байт.