I think for self referencial data structures, passing them by a const& unique_ptr is a reasonable way to do it.
Thanks, Deb.
Thanks, Deb.
Shared pointers or raw pointers are the options that make most sense, in my opinion.
Edit: forgot to say, if you use shared_ptr beware circular references. e.g. in the case of a doubly linked list. weak_ptr could be used to break the cycle, but I'd probably use raw pointers here.