Re[3]: Исключение в деструкторе
От: elcste  
Дата: 13.11.07 15:34
Оценка:
Здравствуйте, Xchllataa, Вы писали:

X>int foo(int bar)
X>{
X>    if(bar == 0xdeadbeef)
X>        DBG_THROW() << "Oops...";
X>    return 42;
X>}

X>int main()
X>{
X>    try
X>    {
X>        DBG_THROW() << "test " << foo(0xdeadbeef);
X>    }
X>    catch (std::exception const& e)
X>    {
X>        std::cout << e.what() << std::endl;
X>    }
X>}

X>Однако в данном примере функция foo() вызывается до того, как будет создан первый временный объект Throw(), и в результате исключения внутри foo() он не будет создан вообще. Т.е. проблемы вроде и нет?

Порядок вычисления операндов не специфицирован. Так, на MSVC 2005 этот код падает в Release и не падает в Debug.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.