What would it take for people to move away from C++?
Even most people who like C++ admit that it has tons of warts not related to its niche as a systems/performance programming language. These include its antiquated module management system (header files), requirement for forward declarations, syntax quirks that make its grammar undecidable (such as <> angle brackets for template declaration), the inclusion of macros that operate at the textual level instead of real language features to address the things macros are used for, duplication of functionality like arrays and strings (STL and C versions of these types), virtually no syntactic sugar, and a general lack of modern features such as threading, garbage collection, delegates/closures, etc.  (Note:  Yes, in very memory constrained or realtime environments you might have good reasons for not wanting garbage collection, but it could easily be made opt-out and be the default way of managing memory.)

On the other hand, C++ is the only *mainstream* language that lets you write code efficiently and close to the metal, but also provides at least some high-level abstraction.  It is mature, standardized and has tons of compiler implementations and libraries and a large legacy codebase.

To those of you out there that use C++ as their main language, what has made you personally decide that its warts are worth putting up with?  What would it take to make you change your mind and decide to use a newer language with fewer of these kinds of warts?  Do you use C++ because you really *like* it, or do you use it grudgingly because of legacy issues or because no other mature, mainstream language exists for its niche?
What would it take for people to move away from C++?
===

Even most people who like C++ admit that it has tons of warts not related to its niche as a systems/performance programming language. These include its antiquated module management system (header files), requirement for forward declarations, syntax quirks that make its grammar undecidable (such as <> angle brackets for template declaration), the inclusion of macros that operate at the textual level instead of real language features to address the things macros are used for, duplication of functionality like arrays and strings (STL and C versions of these types), virtually no syntactic sugar, and a general lack of modern features such as threading, garbage collection, delegates/closures, etc.  (Note:  Yes, in very memory constrained or realtime environments you might have good reasons for not wanting garbage collection, but it could easily be made opt-out and be the default way of managing memory.)

On the other hand, C++ is the only *mainstream* language that lets you write code efficiently and close to the metal, but also provides at least some high-level abstraction.  It is mature, standardized and has tons of compiler implementations and libraries and a large legacy codebase.

To those of you out there that use C++ as their main language, what has made you personally decide that its warts are worth putting up with?  What would it take to make you change your mind and decide to use a newer language with fewer of these kinds of warts?  Do you use C++ because you really *like* it, or do you use it grudgingly because of legacy issues or because no other mature, mainstream language exists for its niche?