--- 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...>