If you use ``std::unique_ptr<T> const &`` for a function parameter type, it means that the function will not be able to alter the ownership of the pointed-to object by the ``unique_ptr``:
That means the function can only observe the pointed-to object, and in this case passing a ``T*`` (if the ``unique_ptr`` can be null) or a ``T&`` (if it cannot) provides the same features, while also allowing the function to work with objects that are not handled by a ``unique_ptr`` (E.G. objects on the stack, in a ``vector``, or in another kind of smart pointer), thus making the function more general-purpose.
* https://github.com/isocpp/CppCoreGuidelines/blob/036324/CppCoreGuidelines.md#r32-take-a-unique_ptrwidget-parameter-to-express-that-a-function-assumes-ownership-of-a-widget[C++ Core Guidelines R.32] - Take a unique_ptr<widget> parameter to express that a function assumes ownership of a widget