--- type_traits.orig 2012-10-04 15:20:43.452992946 -0700 +++ type_traits 2012-10-04 15:21:32.423657167 -0700 @@ -1110,7 +1110,7 @@ template<typename _Tp, typename _Up> struct common_type<_Tp, _Up> - { typedef decltype(true ? declval<_Tp>() : declval<_Up>()) type; }; + { typedef typename decay<decltype(true ? declval<_Tp>() : declval<_Up>())>::type type; }; template<typename _Tp, typename _Up, typename... _Vp> struct common_type<_Tp, _Up, _Vp...>