Different options with different meanings.
by Triangles @ Internal Pointers
From the article:
Passing and returning smart pointers to/from functions are operations that require some planning. There are many ways of doing it and picking the right one is not always straightforward. Luckily for us C++ experts have guidelines that shed some light on this task.