Advertencia sobre cómo ocultar las variables miembro?

El siguiente fragmento de código tiene una pérdida de memoria que pasé demasiado tiempo persiguiendo. El problema es que dentro de Foo (), la variable local x_ oculta la variable miembro x_. También es bastante molesto, porque el compilador podría haberme advertido al respecto. ¿Hay una bandera en GCC para tal advertencia? (Para los curiosos: llegué al código defectuoso usando primero una variable local, luego cambiándola a una variable miembro, pero olvidando eliminar la declaración de tipo).

struct A {
  A() x_(NULL) {}

  ~A() {
    delete x_;
  }

  void Foo() {
    HugeThingy* x_ = new HugeThingy();
    x_->Bar("I. Need. Garbage. Collection. Now.");
  }

  HugeThingy* x_;

  DISALLOW_COPY_AND_ASSIGN(A);  // Macro to prevent copy/assign.
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta