@ManipUni wrote: The reason C# is good has nothing at all to do with it being managed. Any idiot can learn how to deallocate memory or how pointers work. (*)
A managed (execution environment) or language, if you will, is not equivalent to having automatic memory management (garbage collection) or to not having pointers. Proof: there are several garbage collectors available for native C++ and there are pointers in C#. Managed execution environment means that the code you write is compiled for (and executed by) a virtual machine. Programs written for a VM are much more descriptive and "self-aware" than natively compiled programs. You can build simple-to-use and easy-to-configure environments, it is easy to build binary compatible and easily deployable frameworks. That's why you don't have to deal with piss poor compiler/linker output and what I broadly call the "ecosystem" (*) and far too complex libraries (*) which I'd rather put as "libraries which are far too complex to configure and build correctly".
Although @ManipUni's opinion was expressed a bit too radically, I basically agree with her/him. Simply put: IMHO, adding even more complexity to C++ language could be counter-productive, if the "ecosystem" (= compilers, linkers, build environments, libraries + standardized support for deployment of components, etc...) is not evolving at adequate pace.
(*) italic = citation