Not really on-topic for StackOverflow. But yeah, "user-defined type qualifiers" is a neat idea, and one with a long history. They're commonly used for taint analysis (i.e., making sure user-controlled and potentially malicious bits aren't used as if they were trusted bits; making sure all your HTML is properly escaped before you display it; that sort of thing).
http://www.cs.umd.edu/~jfoster/papers/toplas-quals.pdf has taint analysis as its main motivation, but also mentions secure information flow (i.e., making sure sensitive information such as cryptographic key bits don't leak out into the non-secure parts of the code).
That said, for most applications, "user-defined data types" suffice. You can almost always mechanically transform, e.g.
std::string [[tainted]] x into