I agree but too bad this is required for backwards compatibility. Personally I'd prefer if Microsoft just scrapped all pre-Win10 code / API and just remade whole thing from scratch in C++. But that would mean we'd lose lots of already existing libraries.
Templates are ugly
Isn't that the case only with template metaprogramming?
No easy way to print enums
Can Java do that? (I don't use it so I am not aware). Besides, is there a use for that outside debugging / logging reasons?
Hard to parse causing problems with code analysis, navigation (intellisense etc.)
Isn't this mostly caused by C legacy and multiple syntax (ex. C vs C++11 uniform initialization & so on)?
Uninitialized variables still cause a lot of security bugs
You just need to turn up warning levels and treat warning as errors. Compiler won't let you compile uninitialized variables, unused variables, precision loss (ex. implicit cast from uint64 to uint32), & some other things. From my little experience majority of open source libraries don't even compile with those settings.