Очень заманчиво в c++-деструкторах писать некое автоматическое действие - закрытие скобочки XML-ноды, репортить время исполнения, флюшить буфера...
Но увы, такие операции обычно вовсе не nothrow, а throw из деструктора - это мммм невнятная диагностика, мягко говоря. Страуструп решил, что достаточно написать "так делать нельзя" и никто делать не будет. Наивный ученый!
Кстати, по той же причине лучше flush output-файлу делать не в деструкторе, а вручную в конце. А то как вы обработаете пофейлившийся flush внутри close в деструкторе? Желающие могут поэкспериментировать с выдергиванием флешки, на которую пишется буферизующийся файл и со sleep.