Por que o C ++ não usa std :: nested_exception para permitir o lançamento do destruidor?

O principal problema ao lançar exceções do destruidor é que, no momento em que o destruidor é chamado, outra exceção pode estar "em voo" (std::uncaught_exception() == true) e, portanto, não é óbvio o que fazer nesse caso. "Sobrescrever" a exceção antiga pela nova seria uma das maneiras possíveis de lidar com essa situação. Mas foi decidido questd::terminate (ou outrostd::terminate_handler) deve ser chamado nesses casos.

O C ++ 11 introduziu o recurso de exceções aninhadas viastd::nested_exception classe. Esse recurso pode ser usado para resolver o problema descrito acima. A exceção antiga (não capturada) pode ser apenas aninhada na nova exceção (ou vice-versa?) E, em seguida, a exceção aninhada pode ser lançada. Mas essa ideia não foi usada.std::terminate ainda é chamado nessa situação em C ++ 11 e C ++ 14.

Então as perguntas. A idéia com exceções aninhadas foi considerada? Há algum problema com isso? A situação não será alterada no C ++ 17?

questionAnswers(5)

yourAnswerToTheQuestion