
It is the uses of "long long" instead of int64_t that are causing the problem.
The following patch is a mechanical change that replaces all uses I could find into int64_t and uint64_t. It also includes boost/cstdint.h where necessary. However, this only changes headers. It is not necessary, in my case, to make changes in lib/, because these are only compiled by Boost.Build; however, it may be desirable to change these also for some other reason. I'm not sure about this.
Sorry but I pretty certain we can't do that: code that uses long long does so where we want to overload or specialise on a specific *type*. boost::int64_t is a different beast entirely, and need not be long long (in fact it isn't always), your patches would break Boost quite badly for compilers where long long != int64_t. John.