Operador de atribuição C ++ - compilador gerado ou personalizado?

Eu tenho uma classe C ++ de complexo médio que contém um conjunto de dados lidos do disco. Ele contém uma mistura eclética de flutuadores, entradas e estruturas e agora é de uso geral. Durante uma grande revisão de código, foi perguntado se possuímos um operador de atribuição personalizada ou confiamos na versão gerada pelo compilador e, se sim, como sabemos que funciona corretamente? Bem, não escrevemos uma atribuição personalizada e, portanto, um teste de unidade foi adicionado para verificar se, se fizermos:

CalibDataSet datasetA = getDataSet();
CalibDataSet dataSetB = datasetA;

o conjunto de dados B é o mesmo que o conjunto de dadosA. Algumas centenas de linhas, mais ou menos. Agora, o cliente afirma que não podemos confiar que o compilador (gcc) está correto para lançamentos futuros e devemos escrever nossos próprios. Eles estão certos em insistir nisso?

Informação adicional:

Estou impressionado com as respostas / comentários já publicados e o tempo de resposta. Outra maneira de fazer esta pergunta pode ser: Quando uma estrutura / classe do POD se torna uma estrutura / classe do POD 'não'?

questionAnswers(5)

yourAnswerToTheQuestion