`unsign` - agree
`const` - agree
`supports*` - I was actually worrying about it, I don't actually want subclasses to call these methods directly. so I am thinking to make them private.
C++11 - well, the `LangOpts` could tell us which language standard is used, however, do we really need to distinguish even down to the standard level?