Por que a função de conversão void * () do operador foi adicionada às classes de fluxo C ++?

Existe uma função de conversãooperator void*() const nas classes de fluxo C ++. para que todos os objetos de fluxo possam ser implicitamente convertidos emvoid*. Durante a interação com os programadores no SO, eles sugerem que eunão usevoid* a menos que você tenha um bom motivo para usá-lo.void* é uma técnica de remoção do tipo segurança e verificação de erros. Portanto, devido à existência dessa função de conversão, o programa a seguir é perfeitamente válido. Esta é uma falha noBiblioteca padrão C ++.

#include <iostream>
int main()
{
       delete std::cout;
       delete std::cin;
}

Veja demonstração ao vivoaqui.

O programa acima é válido no C ++ 03, mas falha na compilação nos compiladores C ++ 11 e posteriores, porque essa função de conversão é removida. Mas a pergunta é por que ele fazia parte da biblioteca padrão C ++ se é perigoso? Qual era o objetivo de permitir a conversão de objetos de fluxo emvoid*? Qual é a utilidade disso?

questionAnswers(2)

yourAnswerToTheQuestion