- { 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...>
template<typename _Tp, typename _Up>
struct common_type<_Tp, _Up>