By calling this thing a "hat" you look like a person who sees the integral symbols in mathematical text and calls them "hooks". Trying to guess about them is not so productive, pretty much like now knowing which computer language you are looking at. I must admit that the party responsible for certain mess in terminology is Microsoft.
Please see my comment to the question. You just need to learn this language, which is not exactly the C++.
References? Sure:
http://en.wikipedia.org/wiki/C%2B%2B/CLI[
^],
http://www.gotw.ca/publications/C++CLIRationale.pdf[
^],
http://www.ecma-international.org/publications/standards/Ecma-372.htm[
^],
http://msdn.microsoft.com/en-us/library/3bstk3k5%28v=vs.100%29[
^].
[EDIT]
Please also see my comment to the answer by OriginalGriff.
[EDIT]
The character '^' denotes a managed pointer, or a reference sign. C++/CLI has some unique feature not available in other .NET languages: referenced are treated as explicit managed pointers. In other languages, all reference type are accessed and manipulated only via their references, which does not create problems. With C++/CLI, a reference-type object can be manipulated via the reference denoted by '^', or though the non-reference variable, without '^'. That said, C++/CLI allows using of
value semantic for reference objectс. Refer to the books/articles referenced above.
—SA