Secondly, a sadly high number of 'C++ programmers' have decided to call themselves that after reaching the 'C with classes' state and never evolved from there.
Sadly, there is now also a breed of programmer who have learned that "a raw pointer is a bug in progress", but only learned to use a single smart_ptr class.
It bugs me no end to see an externally-reference-counted smart pointer implementation being used to scope non-shared instance variables...
That is what I was originally thinking and one reason that I did not use smart pointers. The class and associated member pointer is not shared. However, I suppose this is the purpose of unique_ptr, which is what I used when I converted my code to use smart pointers.
Raw pointers are not evil, they just complicate memory management. In fact, I would say this push towards using smart pointers in exclusion to raw pointers is creating a generation of programmers that do not understand how to do proper memory management, i.e., the compiler does it for me, so why should I care how to do it?