Every time I tell someone about how marvelous the STL is I hear "yeah we have lists and maps in X language as well, C++ sucks".
The list I read in:
http://www.yosefk.com/c++fqa/defective.html
I realize the guy thinks "object oriented" too much. IMHO 2009 C++ is tailored for generic programming and meta programming. If you try to do C#/Java in C++, yes, you're going to bleed.
C++ is a multi-paradigm language, but it shines when you go generic. You can do incredible things.
And then I stumbled upon this:
"For example, overloaded operators have to return their results by value"
Wrong. The author doesn't understand the difference between, value, reference and pointer in C++. He doesn't understand copy elision. He doesn't understand operator overloading as well and when he talks about smart pointers he says you have to rely on defective (?!) meta programming features (?!). How, I thought I simply had to use std::shared_ptr.
C++ is hard. Because it's made to solve very hard problems. And yes, you can solve these problems in C, you can also solve them in assembly while you're at it.
C++ bad reputation comes from people who should never have been in contact with the language in the first place.