Then the title should have been "Why do bad C++ programmers make things so complicated?" Good C++ programmers can make very complicated things extremely simple.
For example, I'm working on a program where I was trying to do a mass comparison of file names between 2 directories. Essentially, I wanted to get the intersection between two sets of strings. I wondered if there was something that already did this, and after a quick google search, lo and behold, there's an STL algo that handles this, set_intersection.
So in a single line of code, I was able to solve my program that would have taken me a lot more. It wasn't complicated at all, it was extremely simple.
I'm not sure what your anecdote is really meant to prove? Doing set intersection is fairly trivial to implement, and the C++ std library comes with an implementation. The argument is that this claim doesn't scale up, which your anecdote does not address.
Well, the problem is that whenever I try to use any of this magical features it usually turns out that it either cannot do this one tiny detail which I desperately need, make me rewrite huge part of the code to do minor change or is a computational bottleneck because my use case was apparently not in use cases used to develop it.
For example, I'm working on a program where I was trying to do a mass comparison of file names between 2 directories. Essentially, I wanted to get the intersection between two sets of strings. I wondered if there was something that already did this, and after a quick google search, lo and behold, there's an STL algo that handles this, set_intersection.
So in a single line of code, I was able to solve my program that would have taken me a lot more. It wasn't complicated at all, it was extremely simple.