В С++ 11 деструктор без какой-либо спецификации исключений неявно объявляется с помощью noexcept
, что является изменением с С++ 03. Поэтому код, который использовался для удаления из деструкторов в С++ 03, все равно будет компилироваться в С++ 11, но будет аварийно завершен во время выполнения, как только он попытается выбраться из такого деструктора.
Поскольку с таким кодом не существует ошибки времени компиляции, как можно безопасно переходить на С++ 11, не объявляя всех существующих деструкторов в базе кода как noexcept(false)
, что было бы действительно -вершина и навязчивость или проверка каждого деструктора на предмет потенциального выброса, что было бы действительно трудоемким и подверженным ошибкам делать, или ловить и исправлять все сбои во время выполнения, что никогда не гарантирует, что все такие случаи будут найдены