Author: marshall Date: Tue Feb 6 12:56:55 2018 New Revision: 324398 URL: http://llvm.org/viewvc/llvm-project?rev=324398&view=rev Log: Implement P0777: Treating unnecessay decay
Modified: libcxx/trunk/include/optional libcxx/trunk/include/tuple libcxx/trunk/include/type_traits libcxx/trunk/include/variant Modified: libcxx/trunk/include/optional URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/optional?rev=324398&r1=324397&r2=324398&view=diff ============================================================================== --- libcxx/trunk/include/optional (original) +++ libcxx/trunk/include/optional Tue Feb 6 12:56:55 2018 @@ -612,8 +612,8 @@ private: }; template <class _Up> using _CheckOptionalArgsCtor = conditional_t< - !is_same_v<decay_t<_Up>, in_place_t> && - !is_same_v<decay_t<_Up>, optional>, + !is_same_v<__uncvref_t<_Up>, in_place_t> && + !is_same_v<__uncvref_t<_Up>, optional>, _CheckOptionalArgsConstructor, __check_tuple_constructor_fail >; @@ -761,7 +761,7 @@ public: class = enable_if_t <__lazy_and< integral_constant<bool, - !is_same_v<decay_t<_Up>, optional> && + !is_same_v<__uncvref_t<_Up>, optional> && !(is_same_v<_Up, value_type> && is_scalar_v<value_type>) >, is_constructible<value_type, _Up>, Modified: libcxx/trunk/include/tuple URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/tuple?rev=324398&r1=324397&r2=324398&view=diff ============================================================================== --- libcxx/trunk/include/tuple (original) +++ libcxx/trunk/include/tuple Tue Feb 6 12:56:55 2018 @@ -211,7 +211,7 @@ public: template <class _Tp, class = typename enable_if< __lazy_and< - __lazy_not<is_same<typename decay<_Tp>::type, __tuple_leaf>> + __lazy_not<is_same<typename __uncvref<_Tp>::type, __tuple_leaf>> , is_constructible<_Hp, _Tp> >::value >::type @@ -293,7 +293,7 @@ public: template <class _Tp, class = typename enable_if< __lazy_and< - __lazy_not<is_same<typename decay<_Tp>::type, __tuple_leaf>> + __lazy_not<is_same<typename __uncvref<_Tp>::type, __tuple_leaf>> , is_constructible<_Hp, _Tp> >::value >::type @@ -1383,7 +1383,7 @@ constexpr decltype(auto) apply(_Fn && __ _LIBCPP_NOEXCEPT_RETURN( _VSTD::__apply_tuple_impl( _VSTD::forward<_Fn>(__f), _VSTD::forward<_Tuple>(__t), - typename __make_tuple_indices<tuple_size_v<decay_t<_Tuple>>>::type{}) + typename __make_tuple_indices<tuple_size_v<remove_reference_t<_Tuple>>>::type{}) ) template <class _Tp, class _Tuple, size_t... _Idx> @@ -1398,7 +1398,7 @@ inline _LIBCPP_INLINE_VISIBILITY constexpr _Tp make_from_tuple(_Tuple&& __t) _LIBCPP_NOEXCEPT_RETURN( _VSTD::__make_from_tuple_impl<_Tp>(_VSTD::forward<_Tuple>(__t), - typename __make_tuple_indices<tuple_size_v<decay_t<_Tuple>>>::type{}) + typename __make_tuple_indices<tuple_size_v<remove_reference_t<_Tuple>>>::type{}) ) #undef _LIBCPP_NOEXCEPT_RETURN Modified: libcxx/trunk/include/type_traits URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/type_traits?rev=324398&r1=324397&r2=324398&view=diff ============================================================================== --- libcxx/trunk/include/type_traits (original) +++ libcxx/trunk/include/type_traits Tue Feb 6 12:56:55 2018 @@ -1180,9 +1180,7 @@ struct __is_same_uncvref : is_same<typen #if _LIBCPP_STD_VER > 17 // aligned_union - same as __uncvref template <class _Tp> -struct remove_cvref { - using type = remove_cv_t<remove_reference_t<_Tp>>; -}; +struct remove_cvref : public __uncvref<_Tp> {}; template <class _Tp> using remove_cvref_t = typename remove_cvref<_Tp>::type; #endif Modified: libcxx/trunk/include/variant URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/variant?rev=324398&r1=324397&r2=324398&view=diff ============================================================================== --- libcxx/trunk/include/variant (original) +++ libcxx/trunk/include/variant Tue Feb 6 12:56:55 2018 @@ -1143,9 +1143,9 @@ public: template < class _Arg, - enable_if_t<!is_same_v<decay_t<_Arg>, variant>, int> = 0, - enable_if_t<!__is_inplace_type<decay_t<_Arg>>::value, int> = 0, - enable_if_t<!__is_inplace_index<decay_t<_Arg>>::value, int> = 0, + enable_if_t<!is_same_v<__uncvref_t<_Arg>, variant>, int> = 0, + enable_if_t<!__is_inplace_type<__uncvref_t<_Arg>>::value, int> = 0, + enable_if_t<!__is_inplace_index<__uncvref_t<_Arg>>::value, int> = 0, class _Tp = __variant_detail::__best_match_t<_Arg, _Types...>, size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value, @@ -1215,7 +1215,7 @@ public: template < class _Arg, - enable_if_t<!is_same_v<decay_t<_Arg>, variant>, int> = 0, + enable_if_t<!is_same_v<__uncvref_t<_Arg>, variant>, int> = 0, class _Tp = __variant_detail::__best_match_t<_Arg, _Types...>, size_t _Ip = __find_detail::__find_unambiguous_index_sfinae<_Tp, _Types...>::value, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits