I have been reading through the C++ FAQ and was curious about the friend declaration. I personally have never used it, however I am interested in exploring the language.
The tree example is a pretty good example : Having an object implemented in a few different class without having an inheritance relationship.
Maybe you could also need it to have a constructor protected and force people to use your "friend" factory.
... Ok, Well frankly you can live without it.