There are two problems that are tangentially related, and I think the discussion comes from us wanting to solve different problems.
My problem is that it is very distracting to change the C++ code base if there are compiler warnings about existing code. So, I want a code base that compiles with zero warnings as a starting point. There is a different problem, which that there are some dubious casts in our source code. I think that you, ie. Dan and David, want to address that problem. Here is a proposal that can make both of us happy: 1) fix all warning provisorially, by adding the casts that the compiler does today explicitly. We mark them with "TODO: investigate cast". Result: the compile becomes warning-free 2) go over all the "investigate cast" warnings, changing return types/signatures where necessary. Result: our casts are now all kosher. I'm happy to contribute the work for 1). How does that sound? https://codereview.appspot.com/557190043/