synthnostate Well, coupling code with data is one of the key concepts in OO. So saying that structs are just classes without code sounds really funny. Almost like saying that C is just C++ without objects, generics, execeptions... and rvalue references 😃
You're making it sound like one can't have non-member functions in C++. Good thing with C++ is that you can still do stuff pure C style or go with "horrible" C++ style... or be somewhere in between depending on your preferences and project needs. The point is, you have more options, which is generally better than having less options 🙂.
At this point I'm not sure I could endure a chunky project in C without all the STL goodies, to name but one C++ benefit over C. Template syntax can get beffuddling only if you need to build some elaborate template classes yourself or read compiler error messages they generate. But that's reserved for uber-geeks. Using someone else's templates is generally fine. And addition of range for loops over a decade ago made iterator syntax quite clean for majority of typical iteration cases.
I use quite a few major C apis and I dislike the interface in every single one of them, Python api being the notable example.
The simplicity of C is pleasant, but lots of times you just want to be able to wield some heavy weapons when coding close to hardware, even if they look a bit fugly.