Como fazer o equivalente a memset (isso,…) sem danificar o vtbl?

Eu sei que o memset é desaprovado porclass inicialização. Por exemplo, algo como o seguinte:

class X { public: 
X() { memset( this, 0, sizeof(*this) ) ; }
...
} ;

vai destruir ovtbl se houvervirtual função na mistura.

Estou trabalhando em uma base de código legado (gigantesca) que é C-ish, mas compilada em C ++, portanto, todos os membros em questão são tipicamente POD e não requerem nenhum construtor C ++ tradicional. O uso de C ++ se insinua gradualmente (como funções virtuais), e isso afeta os desenvolvedores que não percebem que o memset possui esses dentes C ++ adicionais.

Eu estou querendo saber se há uma maneira segura de C ++ para fazer uma inicialização zero pega-tudo inicial, que poderia ser seguida por inicialização específica por membro onde zero inicialização não é apropriada?

Eu acho as perguntas semelhantesmemset para inicialização em C ++ezerando struct derivada usando memset. Ambas as respostas "não usam memset ()", mas não há boas alternativas (especialmente para grandes estruturas potencialmente contendo muitos membros).

questionAnswers(7)

yourAnswerToTheQuestion