mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
libcxx-compat: revert llvmorg-19-init-4003-g55357160d0e1:
[libc++] Use GCC type traits builtins for remove_cv and remove_cvref (#81386) They have been added recently to GCC without support for mangling. This patch uses them in structs and adds aliases to these structs instead of the builtins directly. PR: 280562 MFC after: 1 month
This commit is contained in:
parent
f3859a1a13
commit
072b5fb698
2 changed files with 15 additions and 15 deletions
|
|
@ -19,17 +19,22 @@
|
|||
|
||||
_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);
|
||||
#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
|
||||
|
|
|
|||
|
|
@ -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…
Reference in a new issue