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.