Hi, I have been reading and watching some tutorials on smart pointers. I understand what they are and why they are used. I don't understand why some people say there are only 2 types of smart pointers....whereas there are several different types of smart pointers: -

1/unique_ptr
2/
shared_ptr
3/
weak_ptr
4/ scoped_ptr

My question is, which ones are used these days...and which are old fashioned? From some tutorials I have watched, people have said to use shared_ptr everywhere and avoid the rest.

What is the difference between the four? When do you use each one? Which ones should I avoid?

I would appreciate if your answers are worded in very simple terms and not tech talk. Thanks