Foundations of C++/CLI: The Visual C++ Language for .NET 3.5 - Hogenson, Gordon (Apress, 2012)
Why extend C++? C++ has evolved over many years; it is used by millions of developers worldwide. The nature of C++ has been to grow as programming paradigms evolve. After all, it was the desire to extend the C language to support object-oriented concepts that prompted Bjarne Stroustrup and his colleagues at Bell Labs to develop “C with classes.” Many of the new language features that have come along have been reflected in the C++ language, such as templates, runtime type information, and so on; they have enhanced the richness (and complexity) of the language. The features added to C++ by C++/CLI are no different. C++/CLI provides a new set of extensions to the C++ language to support programming concepts such as component-based software development, garbage collection, and interoperability with other languages that run on a common virtual machine, along with other useful features. The CLI, or Common Language Infrastructure, is a standard adopted by ECMA International. The CLI defines a virtual machine and enables rich functionality in languages that target the virtual machine, as well as a framework of libraries that provide additional support for the fundamentals of programming against the CLI virtual machine. Collectively, these libraries and the platform constitute the infrastructure of the CLI. It’s a common language infrastructure because a wide variety of languages can target that infrastructure.