C++ syntax uses almost all printable ASCII characters and some of them in several contexts. Only two unused are @ and $ characters. Why they are not used? Are they reserved for some “meta” purpose?
2
It is implementation defined (so you should avoid using them if you care about portability).
Some compilers (e.g. GCC) accept $
in identifiers.
BTW, the backquote ` is also unused in C++.
Notice that early definition of C or C++ languages did not require (and where not used) on systems using ASCII. This explains why some ASCII characters remain unused. (Some systems used EBCDIC and had a C compiler).
Read also about the (ugly) trigraphs (they might go away in C++17)
Be aware of UTF-8 (perhaps some compilers accept it as an extension…)
As Jules commented, read also about name mangling.
1