Quite true, with a caveat. Each feature in every language provides a balance of power to the developer versus a learning curve and potential gotchas. Different programmers will have different balance of opinions on where each feature lies on this spectrum. Each must decide in each case, "is this worth it to me for any potential difficulties I may encounter, and what about any others who work on this in the future?" (each alternative option will also bear such decision-making). There is rarely a single hard, fast rule to determine "use this, don't use that". Consequently I personally recommend to each coder that as they learn of a new feature, they try it out (in a personal project or little task, not some big critical system) and see what role it has on the development process and the maintainability of the code. Some may be overwhelmingly positive. Others may turn out to be overwhelmingly negative. Only experience with the feature can help one determine that.
In my case, I've had good enough experiences with most C++ features that unless I know that a project is also going to be worked on by people who are C++-phobes, I find that they're well worth using. But even in my case I've come across features that I wouldn't even use in personal projects. For example, once several years back I tried out std::transform extensively in a hobby program I was writing - by the end I was convinced that, at least in the sort of use cases I was encountering, it only serves to complicate code, increase development time and decrease legibility. I went back in and modified all of the code to use "for (auto i : list)" loops, and contrarily was very pleased with the result - it led to something that even a C++ novice could understand while simultaneously reducing code size and improving code clarity. So guess which I avoid today and which I use extensively? ;)
But there are no hard, fast rules, and reasonable coders will of course differ.