Miembros de clase constantes, operador de asignación y QList

Conforme si estoy en lo correcto y dígame si hay una mejor solución:

Entiendo que los objetos con miembros constantes comoint const width; no puede ser manejado por el operador de asignación sintética creado implícitamente por el compilador. Pero QList (y supongo que std :: list también) necesita un operador de asignación de trabajo. Entonces, cuando quiero usar objetos con miembros constantes y QList, tengo tres posibilidades:

No uses miembros constantes. (No es una solución)Implementar mi propio operador de asignación.Use algún otro contenedor que no necesite operadores de asignación

¿Es eso correcto? ¿Hay otras soluciones elegantes?

También me pregunto si puedo:

(4) ¡Obligue al compilador a crear un operador de asignación que trate con miembros constantes! (No entiendo por qué este es un problema tan grande. ¿Por qué el operador no es lo suficientemente inteligente como para usar las listas de inicialización internamente? ¿O me estoy perdiendo algo?)(5) Dígale a QList que nunca usaré operaciones de asignación en la lista.

EDITAR: nunca asigno objetos de esta clase yo mismo. Solo los crea el constructor de copia o un constructor sobrecargado. Por lo tanto, el operador de asignación solo es requerido por el contenedor, no por mí mismo.

EDIT2: Este es el operador de asignación que creé. Sin embargo, no estoy seguro de si es correcto. La celda tiene un constructor de dos parámetros. Estos parámetros establecen los dos miembros constantes con listas de inicialización. Pero el objeto también contiene otros miembros variables (no constantes).

Cell& Cell::operator=(Cell const& other)
{
 if (this != &other) {
  Cell* newCell = new Cell(other.column(), other.row());
  return *newCell;
 }
 return *this;
}

EDITAR3: Encontré este hilo con casi la misma pregunta:C ++: problemas de STL con miembros de clase const Todas las respuestas combinadas juntas respondieron mis preguntas.

Respuestas a la pregunta(4)

Su respuesta a la pregunta