File tree Expand file tree Collapse file tree 2 files changed +16
-14
lines changed
libcxx/include/__type_traits Expand file tree Collapse file tree 2 files changed +16
-14
lines changed Original file line number Diff line number Diff line change 1010#define _LIBCPP___TYPE_TRAITS_REMOVE_CV_H
1111
1212#include < __config>
13+ #include < __type_traits/remove_const.h>
14+ #include < __type_traits/remove_volatile.h>
1315
1416#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1517# pragma GCC system_header
1618#endif
1719
1820_LIBCPP_BEGIN_NAMESPACE_STD
1921
22+ #if __has_builtin(__remove_cv) && !defined(_LIBCPP_COMPILER_GCC)
2023template <class _Tp >
2124struct remove_cv {
2225 using type _LIBCPP_NODEBUG = __remove_cv(_Tp);
2326};
2427
25- #if defined(_LIBCPP_COMPILER_GCC)
2628template <class _Tp >
27- using __remove_cv_t = typename remove_cv< _Tp>::type ;
29+ using __remove_cv_t = __remove_cv( _Tp) ;
2830#else
2931template <class _Tp >
30- using __remove_cv_t = __remove_cv(_Tp);
31- #endif
32+ struct _LIBCPP_TEMPLATE_VIS remove_cv {
33+ typedef __remove_volatile_t <__remove_const_t <_Tp> > type;
34+ };
35+
36+ template <class _Tp >
37+ using __remove_cv_t = __remove_volatile_t <__remove_const_t <_Tp> >;
38+ #endif // __has_builtin(__remove_cv)
3239
3340#if _LIBCPP_STD_VER >= 14
3441template <class _Tp >
Original file line number Diff line number Diff line change 2020
2121_LIBCPP_BEGIN_NAMESPACE_STD
2222
23- #if defined(_LIBCPP_COMPILER_GCC)
23+ #if __has_builtin(__remove_cvref) && ! defined(_LIBCPP_COMPILER_GCC)
2424template <class _Tp >
25- struct __remove_cvref_gcc {
26- using type = __remove_cvref(_Tp);
27- };
28-
29- template <class _Tp >
30- using __remove_cvref_t _LIBCPP_NODEBUG = typename __remove_cvref_gcc<_Tp>::type;
25+ using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cvref(_Tp);
3126#else
3227template <class _Tp >
33- using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cvref( _Tp) ;
28+ using __remove_cvref_t _LIBCPP_NODEBUG = __remove_cv_t < __libcpp_remove_reference_t < _Tp> > ;
3429#endif // __has_builtin(__remove_cvref)
3530
3631template <class _Tp , class _Up >
37- using __is_same_uncvref = _IsSame<__remove_cvref_t <_Tp>, __remove_cvref_t <_Up> >;
32+ struct __is_same_uncvref : _IsSame<__remove_cvref_t <_Tp>, __remove_cvref_t <_Up> > {} ;
3833
3934#if _LIBCPP_STD_VER >= 20
4035template <class _Tp >
4136struct remove_cvref {
42- using type _LIBCPP_NODEBUG = __remove_cvref( _Tp) ;
37+ using type _LIBCPP_NODEBUG = __remove_cvref_t < _Tp> ;
4338};
4439
4540template <class _Tp >
You can’t perform that action at this time.
0 commit comments