diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -634,67 +634,28 @@ // remove_const -#if __has_keyword(__remove_const) - -template -struct _LIBCPP_TEMPLATE_VIS remove_const {typedef __remove_const(_Tp) type;}; - -#if _LIBCPP_STD_VER > 11 -template using remove_const_t = __remove_const(_Tp); -#endif - -#else - template struct _LIBCPP_TEMPLATE_VIS remove_const {typedef _Tp type;}; template struct _LIBCPP_TEMPLATE_VIS remove_const {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 template using remove_const_t = typename remove_const<_Tp>::type; #endif -#endif // __has_keyword(__remove_const) - // remove_volatile -#if __has_keyword(__remove_volatile) - -template -struct _LIBCPP_TEMPLATE_VIS remove_volatile {typedef __remove_volatile(_Tp) type;}; - -#if _LIBCPP_STD_VER > 11 -template using remove_volatile_t = __remove_volatile(_Tp); -#endif - -#else - template struct _LIBCPP_TEMPLATE_VIS remove_volatile {typedef _Tp type;}; template struct _LIBCPP_TEMPLATE_VIS remove_volatile {typedef _Tp type;}; #if _LIBCPP_STD_VER > 11 template using remove_volatile_t = typename remove_volatile<_Tp>::type; #endif -#endif // __has_keyword(__remove_volatile) - // remove_cv -#if __has_keyword(__remove_cv) - -template -struct _LIBCPP_TEMPLATE_VIS remove_cv {typedef __remove_cv(_Tp) type;}; - -#if _LIBCPP_STD_VER > 11 -template using remove_cv_t = __remove_cv(_Tp); -#endif - -#else - template struct _LIBCPP_TEMPLATE_VIS remove_cv {typedef typename remove_volatile::type>::type type;}; #if _LIBCPP_STD_VER > 11 template using remove_cv_t = typename remove_cv<_Tp>::type; #endif -#endif // __has_keyword(__remove_cv) - // is_void #if __has_keyword(__is_void) @@ -1272,13 +1233,6 @@ // remove_reference -#if __has_keyword(__remove_reference) - -template -struct _LIBCPP_TEMPLATE_VIS remove_reference { typedef __remove_reference(_Tp) type; }; - -#else // __has_keyword(__remove_reference) - template struct _LIBCPP_TEMPLATE_VIS remove_reference {typedef _LIBCPP_NODEBUG _Tp type;}; template struct _LIBCPP_TEMPLATE_VIS remove_reference<_Tp&> {typedef _LIBCPP_NODEBUG _Tp type;}; template struct _LIBCPP_TEMPLATE_VIS remove_reference<_Tp&&> {typedef _LIBCPP_NODEBUG _Tp type;}; @@ -1287,8 +1241,6 @@ template using remove_reference_t = typename remove_reference<_Tp>::type; #endif -#endif // __has_keyword(__remove_reference) - // add_lvalue_reference template ::value> struct __add_lvalue_reference_impl { typedef _LIBCPP_NODEBUG _Tp type; };