Operador de asignación C ++: ¿compilador generado o personalizado?

Tengo una clase C ++ compleja media que contiene un conjunto de datos leídos del disco. Contiene una mezcla ecléctica de flotadores, estructuras y estructuras y ahora es de uso general. Durante una revisión importante del código, se preguntó si tenemos un operador de asignación personalizado o si confiamos en la versión generada por el compilador y, de ser así, ¿cómo sabemos que funciona correctamente? Bueno, no escribimos una asignación personalizada, por lo que se agregó una prueba unitaria para verificar que si lo hacemos:

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

entonces datasetB es lo mismo que datasetA. Un par de cientos de líneas más o menos. Ahora el cliente insiste en que no podemos confiar en que el compilador (gcc) sea correcto para futuras versiones y que debemos escribir el nuestro. ¿Tienen razón al insistir en esto?

Información adicional:

Estoy impresionado por las respuestas / comentarios ya publicados y el tiempo de respuesta. Otra forma de hacer esta pregunta podría ser: ¿Cuándo una estructura / clase POD se convierte en una estructura / clase 'no' POD?

Respuestas a la pregunta(5)

Su respuesta a la pregunta