Citing http://blogs.msdn.com/b/vcblog/archive/2012/08/29/cxxcxpart00anintroduction.aspx: > . . . while C++/CX is syntactically similar to C++/CLI and thus looks almost > the same in many ways, it is semantically quite different. C++/CX code > is native code, no CLR required. Programming in C++/CLI can be very > challenging, as one must deftly juggle two very different object > models at the same time: the C++ object model with its deterministic > object lifetimes, and the garbage-collected CLI object model. C++/CX > is much simpler to work with, because the Windows Runtime, which is > based on COM, maps very well to the C++ programming language. > > Windows Runtime defines a relatively simple, low-level Application > Binary Interface (ABI), and mandates that components define their > types using a common metadata format. C++/CX is not strictly required > to write a native Windows Runtime component: it is quite possible to > write Windows Runtime components using C++ without using the C++/CX > language extensions, and Visual C++ 2012 includes a library, the > Windows Runtime C++ Template Library (WRL), to help make this easier. > Many of the Windows Runtime components that ship as part of Windows > (in the Windows namespace) are written using WRL. There's no magic in > C++/CX: it just makes writing Windows Runtime components in C++ much, > much simpler and helps to cut the amount of repetitive and verbose > code that you would have to write when using a library-based solution > like WRL.