[libc++] Revert "Use GCC type traits builtins for remove_cv and remove_cvref (#81386)"
This reverts commit 55357160d0e151c32f86e1d6683b4bddbb706aa1. This is only being reverted from the LLVM 19 branch as a convenience to avoid breaking some IDEs which were not ready for that change. Fixes #99464
This commit is contained in:
parent
b14801954e
commit
0e615206e3
@ -10,6 +10,8 @@
|
||||
#define _LIBCPP___TYPE_TRAITS_REMOVE_CV_H
|
||||
|
||||
#include <__config>
|
||||
#include <__type_traits/remove_const.h>
|
||||
#include <__type_traits/remove_volatile.h>
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# pragma GCC system_header
|
||||
@ -17,18 +19,23 @@
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
#if __has_builtin(__remove_cv) && !defined(_LIBCPP_COMPILER_GCC)
|
||||
template <class _Tp>
|
||||
struct remove_cv {
|
||||
using type _LIBCPP_NODEBUG = __remove_cv(_Tp);
|
||||
};
|
||||
|
||||
#if defined(_LIBCPP_COMPILER_GCC)
|
||||
template <class _Tp>
|
||||
using __remove_cv_t = typename remove_cv<_Tp>::type;
|
||||
#else
|
||||
template <class _Tp>
|
||||
using __remove_cv_t = __remove_cv(_Tp);
|
||||
#endif
|
||||
#else
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS remove_cv {
|
||||
typedef __remove_volatile_t<__remove_const_t<_Tp> > type;
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __remove_cv_t = __remove_volatile_t<__remove_const_t<_Tp> >;
|
||||
#endif // __has_builtin(__remove_cv)
|
||||
|
||||
#if _LIBCPP_STD_VER >= 14
|
||||
template <class _Tp>
|
||||
|
@ -20,26 +20,21 @@
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
#if defined(_LIBCPP_COMPILER_GCC)
|
||||
template <class _Tp>
|
||||
struct __remove_cvref_gcc {
|
||||
using type = __remove_cvref(_Tp);
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
using __remove_cvref_t _LIBCPP_NODEBUG = typename __remove_cvref_gcc<_Tp>::type;
|
||||
#else
|
||||
#if __has_builtin(__remove_cvref) && !defined(_LIBCPP_COMPILER_GCC)
|
||||
template <class _Tp>
|
||||
using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cvref(_Tp);
|
||||
#else
|
||||
template <class _Tp>
|
||||
using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cv_t<__libcpp_remove_reference_t<_Tp> >;
|
||||
#endif // __has_builtin(__remove_cvref)
|
||||
|
||||
template <class _Tp, class _Up>
|
||||
using __is_same_uncvref = _IsSame<__remove_cvref_t<_Tp>, __remove_cvref_t<_Up> >;
|
||||
struct __is_same_uncvref : _IsSame<__remove_cvref_t<_Tp>, __remove_cvref_t<_Up> > {};
|
||||
|
||||
#if _LIBCPP_STD_VER >= 20
|
||||
template <class _Tp>
|
||||
struct remove_cvref {
|
||||
using type _LIBCPP_NODEBUG = __remove_cvref(_Tp);
|
||||
using type _LIBCPP_NODEBUG = __remove_cvref_t<_Tp>;
|
||||
};
|
||||
|
||||
template <class _Tp>
|
||||
|
Loading…
x
Reference in New Issue
Block a user