Advertencia C26405
No asigne a un
owner<T>
que pueda estar en estado válido (r.3)
Comentarios
Si un puntero propietario ya apunta a un búfer de memoria válido, no debe asignarse a otro valor sin liberar primero su recurso actual. Esta asignación puede provocar una pérdida de recursos incluso si la dirección del recurso se copia en algún puntero sin procesar (ya que los punteros sin procesar no deben liberar recursos). Para más información, consulte C++ Core Guidelines.
Nombre del análisis de código: DONT_ASSIGN_TO_VALID
Ejemplo 1
Sobrescribir un propietario en un bucle:
gsl::owner<Shape*> shape = nullptr;
while (shape = NextShape()) // C26405
Process(shape) ? delete shape : 0;