Qt: ¿es posible eliminar elementos QList mientras se itera usando la macro foreach?

Soy nuevo en Qt y trato de aprender los modismos.

Losforeach documentación dice

Qt toma automáticamente una copia del contenedor cuando entra en un bucle foreach. Si modifica el contenedor mientras está iterando, eso no afectará el ciclo.

Pero no dicecóm para eliminar un elemento mientras se itera conforeach. Mi mejor conjetura es algo como:

int idx = 0;
foreach (const Foo &foo, fooList) {
  if (bad(foo)) {
    fooList.removeAt(idx);
  }
  ++idx;
}

Parece feo tener que tener alcanceidx fuera del bucle (y para tener que mantener un contador de bucle separado).

Además, sé queforeach hace una copia de laQList, que es barato, pero ¿qué sucede una vez que elimino un elemento? ¿Sigue siendo barato o hay una copia on-cost costosa pasando? Si, sucede una copia profunda.

EDIT: Esto tampoco parece una Qt idiomática.

for (int idx = 0; idx < fooList.size(); ) {
  const Foo &foo = fooList[idx];
  if (bad(foo)) {
    fooList.removeAt(idx);
  }
  else ++idx;
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta