struct Foo {
void replaceBy(Foo*& foo, Foo* bar) {
  delete foo;
  foo = bar;
}
};

int main() {
  Foo *foo = new Foo;
  Foo *bar = new Foo;
  foo->replaceBy(foo, bar);
  delete bar;
  return 0;
}