Skip to content

Commit

Permalink
[libc++] Revert "Use GCC type traits builtins for remove_cv and remov…
Browse files Browse the repository at this point in the history
…e_cvref (#81386)"

This reverts commit 5535716.
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
  • Loading branch information
ldionne authored and tru committed Aug 1, 2024
1 parent b148019 commit 0e61520
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
15 changes: 11 additions & 4 deletions libcxx/include/__type_traits/remove_cv.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,32 @@
#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
#endif

_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;
using __remove_cv_t = __remove_cv(_Tp);
#else
template <class _Tp>
using __remove_cv_t = __remove_cv(_Tp);
#endif
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>
Expand Down
15 changes: 5 additions & 10 deletions libcxx/include/__type_traits/remove_cvref.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,21 @@

_LIBCPP_BEGIN_NAMESPACE_STD

#if defined(_LIBCPP_COMPILER_GCC)
#if __has_builtin(__remove_cvref) && !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;
using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cvref(_Tp);
#else
template <class _Tp>
using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cvref(_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>
Expand Down

0 comments on commit 0e61520

Please sign in to comment.