Author: marshall Date: Mon Apr 10 18:47:47 2017 New Revision: 299901 URL: http://llvm.org/viewvc/llvm-project?rev=299901&view=rev Log: Fix PR#32605: common_type<T> is not SFINAE-friendly
Modified: libcxx/trunk/include/type_traits libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp Modified: libcxx/trunk/include/type_traits URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/type_traits?rev=299901&r1=299900&r2=299901&view=diff ============================================================================== --- libcxx/trunk/include/type_traits (original) +++ libcxx/trunk/include/type_traits Mon Apr 10 18:47:47 2017 @@ -1998,9 +1998,7 @@ struct _LIBCPP_TEMPLATE_VIS common_type template <class _Tp> struct _LIBCPP_TEMPLATE_VIS common_type<_Tp> -{ - typedef typename common_type<_Tp, _Tp>::type type; -}; + : public common_type<_Tp, _Tp> {}; // bullet 3 - sizeof...(Tp) == 2 Modified: libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp?rev=299901&r1=299900&r2=299901&view=diff ============================================================================== --- libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp (original) +++ libcxx/trunk/test/std/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp Mon Apr 10 18:47:47 2017 @@ -45,6 +45,8 @@ namespace std template <> struct common_type< ::S<long>, long> {}; template <> struct common_type<long, ::S<long> > {}; + template <> struct common_type<::X<float> > {}; + template <> struct common_type<::X<double>, ::X<double> > {}; } #if TEST_STD_VER >= 11 @@ -304,5 +306,7 @@ int main() static_assert((std::is_same<std::common_type<const int, int>::type, int>::value), ""); static_assert((std::is_same<std::common_type<int, const int>::type, int>::value), ""); static_assert((std::is_same<std::common_type<const int, const int>::type, int>::value), ""); - + + static_assert(no_common_type<X<float> >::value, ""); + static_assert(no_common_type<X<double> >::value, ""); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits