Por que as exceções em C ++ não são verificadas pelo compilador?

C ++ fornece uma sintaxe para exceções verificadas, por exemplo:

void G() throw(Exception);
void f() throw();

No entanto, o compilador do Visual C ++ não os verifica; a bandeira de lançamento é simplesmente ignorada. Na minha opinião, isso torna o recurso de exceção inutilizável. Então minha pergunta é:Existe uma maneira de fazer o compilador verificar se as exceções são capturadas / relançadas corretamente? Por exemplo, um plug-in do Visual C ++ ou um compilador C ++ diferente.

PS. Eu quero que o compilador verifique se as exceções são capturadas corretamente, caso contrário, você acaba em uma situação em que você tem que colocar uma captura em torno de cada chamada de função que você faz,mesmo que declarem explicitamente que não vão jogar nada.

Atualizar: o compilador Visual C ++ mostra um aviso ao lançar em uma função marcada com throw (). Isso é ótimo, mas lamentavelmente, o aviso não aparece quando você chama uma sub-rotina que pode lançar. Por exemplo:

void f() throw(int) { throw int(13); }
void h() throw() { g(); } //no warning here!