Atomic instructions are quite slow and if they run a lot… Rust has two types of reference counted pointer for that reason. One that has atomic reference counting for multithreaded code and one non-atomic for single threaded. Reference counting is usually overkill in the first place and can be a sign that your code doesn’t have proper ownership.
The problem is everyone disagrees on what part of C++ is good… Some like C+classes. Some like intense meta programming and some like functional programming and all are valid C++ that people advocate for.