Из этого ответа https://stackoverflow.com/a/36738405/4523099:
Выражение throw без операнда повторно создает обрабатываемое в данный момент исключение. Исключение повторно активируется с существующим временным; новый объект временного исключения не создается. -- ISO/IEC 14882:2011, раздел 15.1, пар. 8
Итак, почему я получаю эти результаты из этого кода?
код:
#include <iostream>
class my_exception: public std::exception{
public:
int value;
};
int main()
{
my_exception ex;
ex.value=1;
try{
throw ex;
}
catch(my_exception& e){
e.value=2;
}
std::cout << ex.value;
return 0;
}
Фактический результат:
1
Я думал, что должно быть 2 в зависимости от стандартной квоты. Что мне не хватает?
throw;
(в блоке catch). - person Jarod42   schedule 20.04.2016