Skip to content

Commit 4bc6499

Browse files
committed
[libc++][NFC] Remove one apply_cv implementation
Reviewed By: #libc, ldionne Spies: arichardson, libcxx-commits Differential Revision: https://reviews.llvm.org/D148468
1 parent 2ae1aa9 commit 4bc6499

File tree

10 files changed

+50
-132
lines changed

10 files changed

+50
-132
lines changed

libcxx/include/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,6 @@ set(files
596596
__thread/timed_backoff_policy.h
597597
__threading_support
598598
__tree
599-
__tuple/apply_cv.h
600599
__tuple/make_tuple_types.h
601600
__tuple/pair_like.h
602601
__tuple/sfinae_helpers.h

libcxx/include/__tuple/apply_cv.h

Lines changed: 0 additions & 70 deletions
This file was deleted.

libcxx/include/__tuple/make_tuple_types.h

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
#include <__config>
1313
#include <__fwd/array.h>
1414
#include <__fwd/tuple.h>
15-
#include <__tuple/apply_cv.h>
1615
#include <__tuple/tuple_element.h>
1716
#include <__tuple/tuple_indices.h>
1817
#include <__tuple/tuple_size.h>
1918
#include <__tuple/tuple_types.h>
19+
#include <__type_traits/apply_cv.h>
2020
#include <__type_traits/remove_cv.h>
2121
#include <__type_traits/remove_reference.h>
2222
#include <cstddef>
@@ -40,20 +40,16 @@ struct __make_tuple_types_flat;
4040
template <template <class...> class _Tuple, class ..._Types, size_t ..._Idx>
4141
struct __make_tuple_types_flat<_Tuple<_Types...>, __tuple_indices<_Idx...>> {
4242
// Specialization for pair, tuple, and __tuple_types
43-
template <class _Tp, class _ApplyFn = __apply_cv_t<_Tp>>
44-
using __apply_quals _LIBCPP_NODEBUG = __tuple_types<
45-
typename _ApplyFn::template __apply<__type_pack_element<_Idx, _Types...>>...
46-
>;
43+
template <class _Tp>
44+
using __apply_quals _LIBCPP_NODEBUG = __tuple_types<__apply_cv_t<_Tp, __type_pack_element<_Idx, _Types...>>...>;
4745
};
4846

4947
template <class _Vt, size_t _Np, size_t ..._Idx>
5048
struct __make_tuple_types_flat<array<_Vt, _Np>, __tuple_indices<_Idx...>> {
5149
template <size_t>
5250
using __value_type = _Vt;
53-
template <class _Tp, class _ApplyFn = __apply_cv_t<_Tp>>
54-
using __apply_quals = __tuple_types<
55-
typename _ApplyFn::template __apply<__value_type<_Idx>>...
56-
>;
51+
template <class _Tp>
52+
using __apply_quals = __tuple_types<__apply_cv_t<_Tp, __value_type<_Idx>>...>;
5753
};
5854

5955
template <class _Tp, size_t _Ep = tuple_size<__libcpp_remove_reference_t<_Tp> >::value,

libcxx/include/__type_traits/apply_cv.h

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,63 +13,66 @@
1313
#include <__type_traits/is_const.h>
1414
#include <__type_traits/is_volatile.h>
1515
#include <__type_traits/remove_reference.h>
16-
#include <cstddef>
1716

1817
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1918
# pragma GCC system_header
2019
#endif
2120

2221
_LIBCPP_BEGIN_NAMESPACE_STD
2322

24-
template <class _Tp, class _Up, bool = is_const<__libcpp_remove_reference_t<_Tp> >::value,
25-
bool = is_volatile<__libcpp_remove_reference_t<_Tp> >::value>
26-
struct __apply_cv
27-
{
28-
typedef _LIBCPP_NODEBUG _Up type;
23+
template <class _Tp,
24+
bool = is_const<__libcpp_remove_reference_t<_Tp> >::value,
25+
bool = is_volatile<__libcpp_remove_reference_t<_Tp> >::value>
26+
struct __apply_cv_impl {
27+
template <class _Up>
28+
using __apply _LIBCPP_NODEBUG = _Up;
2929
};
3030

31-
template <class _Tp, class _Up>
32-
struct __apply_cv<_Tp, _Up, true, false>
33-
{
34-
typedef _LIBCPP_NODEBUG const _Up type;
31+
template <class _Tp>
32+
struct __apply_cv_impl<_Tp, true, false> {
33+
template <class _Up>
34+
using __apply _LIBCPP_NODEBUG = const _Up;
3535
};
3636

37-
template <class _Tp, class _Up>
38-
struct __apply_cv<_Tp, _Up, false, true>
39-
{
40-
typedef volatile _Up type;
37+
template <class _Tp>
38+
struct __apply_cv_impl<_Tp, false, true> {
39+
template <class _Up>
40+
using __apply _LIBCPP_NODEBUG = volatile _Up;
4141
};
4242

43-
template <class _Tp, class _Up>
44-
struct __apply_cv<_Tp, _Up, true, true>
45-
{
46-
typedef const volatile _Up type;
43+
template <class _Tp>
44+
struct __apply_cv_impl<_Tp, true, true> {
45+
template <class _Up>
46+
using __apply _LIBCPP_NODEBUG = const volatile _Up;
4747
};
4848

49-
template <class _Tp, class _Up>
50-
struct __apply_cv<_Tp&, _Up, false, false>
51-
{
52-
typedef _Up& type;
49+
template <class _Tp>
50+
struct __apply_cv_impl<_Tp&, false, false> {
51+
template <class _Up>
52+
using __apply _LIBCPP_NODEBUG = _Up&;
5353
};
5454

55-
template <class _Tp, class _Up>
56-
struct __apply_cv<_Tp&, _Up, true, false>
57-
{
58-
typedef const _Up& type;
55+
template <class _Tp>
56+
struct __apply_cv_impl<_Tp&, true, false> {
57+
template <class _Up>
58+
using __apply _LIBCPP_NODEBUG = const _Up&;
5959
};
6060

61-
template <class _Tp, class _Up>
62-
struct __apply_cv<_Tp&, _Up, false, true>
63-
{
64-
typedef volatile _Up& type;
61+
template <class _Tp>
62+
struct __apply_cv_impl<_Tp&, false, true> {
63+
template <class _Up>
64+
using __apply _LIBCPP_NODEBUG = volatile _Up&;
6565
};
6666

67-
template <class _Tp, class _Up>
68-
struct __apply_cv<_Tp&, _Up, true, true>
69-
{
70-
typedef const volatile _Up& type;
67+
template <class _Tp>
68+
struct __apply_cv_impl<_Tp&, true, true> {
69+
template <class _Up>
70+
using __apply _LIBCPP_NODEBUG = const volatile _Up&;
7171
};
7272

73+
template <class _Tp, class _Up>
74+
using __apply_cv_t _LIBCPP_NODEBUG = typename __apply_cv_impl<_Tp>::template __apply<_Up>;
75+
7376
_LIBCPP_END_NAMESPACE_STD
7477

7578
#endif // _LIBCPP___TYPE_TRAITS_APPLY_CV_H

libcxx/include/__type_traits/make_signed.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ template <> struct __make_signed<__uint128_t, true> {typedef __int128_t t
6868
# endif
6969

7070
template <class _Tp>
71-
using __make_signed_t = typename __apply_cv<_Tp, typename __make_signed<__remove_cv_t<_Tp> >::type>::type;
71+
using __make_signed_t = __apply_cv_t<_Tp, typename __make_signed<__remove_cv_t<_Tp> >::type>;
7272

7373
#endif // __has_builtin(__make_signed)
7474

libcxx/include/__type_traits/make_unsigned.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ template <> struct __make_unsigned<__uint128_t, true> {typedef __uint128_
7070
# endif
7171

7272
template <class _Tp>
73-
using __make_unsigned_t = typename __apply_cv<_Tp, typename __make_unsigned<__remove_cv_t<_Tp> >::type>::type;
73+
using __make_unsigned_t = __apply_cv_t<_Tp, typename __make_unsigned<__remove_cv_t<_Tp> >::type>;
7474

7575
#endif // __has_builtin(__make_unsigned)
7676

libcxx/include/module.modulemap.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1467,7 +1467,6 @@ module std [system] {
14671467
header "tuple"
14681468
export *
14691469

1470-
module apply_cv { private header "__tuple/apply_cv.h" }
14711470
module get_fwd { private header "__fwd/get.h" }
14721471
module make_tuple_types { private header "__tuple/make_tuple_types.h" }
14731472
module pair_like { private header "__tuple/pair_like.h" }

libcxx/include/tuple

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1711,17 +1711,15 @@ template <class ..._Types, size_t ..._I0, class _Tuple0>
17111711
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>, _Tuple0>
17121712
{
17131713
typedef _LIBCPP_NODEBUG __libcpp_remove_reference_t<_Tuple0> _T0;
1714-
typedef tuple<_Types..., typename __apply_cv<_Tuple0,
1715-
typename tuple_element<_I0, _T0>::type>::type&&...> type;
1714+
typedef tuple<_Types..., __apply_cv_t<_Tuple0, typename tuple_element<_I0, _T0>::type>&&...> type;
17161715
};
17171716

17181717
template <class ..._Types, size_t ..._I0, class _Tuple0, class _Tuple1, class ..._Tuples>
17191718
struct __tuple_cat_return_ref_imp<tuple<_Types...>, __tuple_indices<_I0...>,
17201719
_Tuple0, _Tuple1, _Tuples...>
17211720
: public __tuple_cat_return_ref_imp<
1722-
tuple<_Types..., typename __apply_cv<_Tuple0,
1723-
typename tuple_element<_I0,
1724-
__libcpp_remove_reference_t<_Tuple0> >::type>::type&&...>,
1721+
tuple<_Types..., __apply_cv_t<_Tuple0,
1722+
typename tuple_element<_I0, __libcpp_remove_reference_t<_Tuple0>>::type>&&...>,
17251723
typename __make_tuple_indices<tuple_size<__libcpp_remove_reference_t<_Tuple1> >::value>::type,
17261724
_Tuple1, _Tuples...>
17271725
{
@@ -1761,13 +1759,9 @@ struct __tuple_cat<tuple<_Types...>, __tuple_indices<_I0...>, __tuple_indices<_J
17611759
(void)__t; // avoid unused parameter warning on GCC when _I0 is empty
17621760
typedef _LIBCPP_NODEBUG __libcpp_remove_reference_t<_Tuple0> _T0;
17631761
typedef _LIBCPP_NODEBUG __libcpp_remove_reference_t<_Tuple1> _T1;
1764-
return __tuple_cat<
1765-
tuple<_Types...,
1766-
typename __apply_cv<_Tuple0, typename tuple_element<
1767-
_J0, _T0>::type>::type&&...>,
1768-
typename __make_tuple_indices<sizeof...(_Types) +
1769-
tuple_size<_T0>::value>::type,
1770-
typename __make_tuple_indices<tuple_size<_T1>::value>::type>()(
1762+
return __tuple_cat<tuple<_Types..., __apply_cv_t<_Tuple0, typename tuple_element<_J0, _T0>::type>&&...>,
1763+
typename __make_tuple_indices<sizeof...(_Types) + tuple_size<_T0>::value>::type,
1764+
typename __make_tuple_indices<tuple_size<_T1>::value>::type>()(
17711765
_VSTD::forward_as_tuple(
17721766
_VSTD::forward<_Types>(_VSTD::get<_I0>(__t))...,
17731767
_VSTD::get<_J0>(_VSTD::forward<_Tuple0>(__t0))...),

libcxx/test/libcxx/private_headers.verify.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,6 @@ END-SCRIPT
609609
#include <__system_error/system_error.h> // expected-error@*:* {{use of private header from outside its module: '__system_error/system_error.h'}}
610610
#include <__thread/poll_with_backoff.h> // expected-error@*:* {{use of private header from outside its module: '__thread/poll_with_backoff.h'}}
611611
#include <__thread/timed_backoff_policy.h> // expected-error@*:* {{use of private header from outside its module: '__thread/timed_backoff_policy.h'}}
612-
#include <__tuple/apply_cv.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/apply_cv.h'}}
613612
#include <__tuple/make_tuple_types.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/make_tuple_types.h'}}
614613
#include <__tuple/pair_like.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/pair_like.h'}}
615614
#include <__tuple/sfinae_helpers.h> // expected-error@*:* {{use of private header from outside its module: '__tuple/sfinae_helpers.h'}}

libcxx/utils/data/ignore_format.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,6 @@ libcxx/include/__thread/poll_with_backoff.h
616616
libcxx/include/__thread/timed_backoff_policy.h
617617
libcxx/include/__tree
618618
libcxx/include/tuple
619-
libcxx/include/__tuple/apply_cv.h
620619
libcxx/include/__tuple/make_tuple_types.h
621620
libcxx/include/__tuple/sfinae_helpers.h
622621
libcxx/include/__tuple/tuple_element.h
@@ -634,7 +633,6 @@ libcxx/include/__type_traits/add_volatile.h
634633
libcxx/include/__type_traits/aligned_storage.h
635634
libcxx/include/__type_traits/aligned_union.h
636635
libcxx/include/__type_traits/alignment_of.h
637-
libcxx/include/__type_traits/apply_cv.h
638636
libcxx/include/__type_traits/can_extract_key.h
639637
libcxx/include/__type_traits/common_reference.h
640638
libcxx/include/__type_traits/common_type.h

0 commit comments

Comments
 (0)