I work on a project that is a c & c++ codebase where there isn't really a great reason for it being in those languages vs a language "with a runtime"
the hate is pretty simple:
- compile times
- vague compiler errors
- template syntax is incredibly hard to read, especially when using techniques like sfinae, or trying to write functional interfaces
- really bad names for idioms (raii, sfinae, pimpl)
- really bad names for standard library types & functions
- truly arrogant community (notice how the boost website doesn't advertise that it's the easiest to use library -- it's the "most expertly designed")
- class member function declaration is out of control (`virtual const foo bar(const baz& x) const override`)
- defaults are unsafe (mutable by default)
- package management is a nightmare (i've only used conan, which is starting to mature, but still has a limited selection of packages, and seems to
constantly break how they do things...because package building for an ecosystem as wide and unstructured as c++ is an intractable problem)
- cmake is the worst dsl ever. the program itself is fine, but the dsl is the worst.
- footguns everywhere (auto vs auto&...but auto* exists, and isn't necessary)
- N different ways of initializing
- it's incredibly hard to teach
- inconsistencies w/ C (brace initialization w/ named fields)
- incredibly subtle things can have a huge impact (class member variable declaration order)
- no standard way to document classes & functions
there are still certainly use cases where it's worth using, but the hate is pretty straightforward to me: it's just more hassle than it's worth most of the time. and there is some inner language struggling to get out that's probably nice to use. There are some nice things about it: notably static destruction.
and yes, some of those are more ecosystem based / my own opinions / not necessarily "the language" -- and there are reasons for why many of the warts are the way they are (backwards compatibility, control over construction order). it's still a giant pain in my ass.