Changed parameter passing suggestion: Herb Sutter actually suggests using T& and T* parameters instead of const references to smart pointers. That way, your functions will work with any T, regardless of how its lifetime is managed.