Currently the C++03 implementation of common_type has much different behavior than the C++11 one. This causes bugs, including inside <chrono>.
This patch unifies the two implementations as best it can. The more code they share, the less their behavior can diverge.
Why this define? It's only used one other place - why not just use _LIBCPP_CXX03_LANG?