chandlerc
The integer literals we are shifting are of 'int' type, and the shift occurs at that type (based on the usual arithmetic conversions). There is stack overflow question with explanations and a good blog post here about it:
http://stackoverflow.com/questions/836544/usual-arithmetic-c...
http://blogs.msdn.com/b/oldnewthing/archive/2004/03/10/87247...
Also, you can look through the C++98 standard to understand all the details. Relevant sections are [expr]p9 and [expr.shift].
A lot of the static analyses we've looked into (and I'm hoping for more detailed blog posts about that in the future) find plenty of bugs, but also find lots of non-bugs. Combine that with being too slow to run during the normal build, and you can't break the build when such a bug is found.
I think one of the most interesting aspects of this is how we catch the bugs early, and force developers to fix them immediately by breaking the build.