Maybe I'm missing something, but how much do you really save by passing a shared pointer by reference?  Isn't passing a shared pointer by reference kind of dangerous?  Can you _always_ be guaranteed that it will work ok and the ref count won't go to zero and cause the object to be destroyed?

I've always followed the guideline of passing shared pointers by value.  Copying a shared pointer is extremely fast, or am I missing something?

Phillip Hellewell