Some STL implementations have some class definitions (e.g. iterators) in a namespace outside of std.
This patch will extend the warnings from classes in std namespace to other implementation specified namespaces (that start with double underscored or underscore and a capital letter).
This patch also contains some NFC changes that supposed to make the code cleaner. If desired, I can split up this patch to two parts.