Skip to content

Commit e37a600

Browse files
authored
[libc++][NFC] Remove dead code implementing some tuple SFINAE checks (#79871)
Some of the checks in sfinae_helpers.h were not used anymore since we refactored the std::tuple implementation and were now dead code. This patch removes the code.
1 parent 7162fd7 commit e37a600

File tree

2 files changed

+1
-33
lines changed

2 files changed

+1
-33
lines changed

libcxx/include/__tuple/sfinae_helpers.h

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818
#include <__tuple/tuple_types.h>
1919
#include <__type_traits/enable_if.h>
2020
#include <__type_traits/integral_constant.h>
21-
#include <__type_traits/is_assignable.h>
2221
#include <__type_traits/is_constructible.h>
23-
#include <__type_traits/is_convertible.h>
2422
#include <__type_traits/is_same.h>
2523
#include <__type_traits/remove_cvref.h>
2624
#include <__type_traits/remove_reference.h>
@@ -49,25 +47,8 @@ struct __tuple_sfinae_base {
4947

5048
template <class _FromArgs, class _ToArgs>
5149
using __constructible = decltype(__do_test<is_constructible>(_ToArgs{}, _FromArgs{}));
52-
template <class _FromArgs, class _ToArgs>
53-
using __convertible = decltype(__do_test<is_convertible>(_FromArgs{}, _ToArgs{}));
54-
template <class _FromArgs, class _ToArgs>
55-
using __assignable = decltype(__do_test<is_assignable>(_ToArgs{}, _FromArgs{}));
5650
};
5751

58-
// __tuple_convertible
59-
60-
template <class _Tp,
61-
class _Up,
62-
bool = __tuple_like_ext<__libcpp_remove_reference_t<_Tp> >::value,
63-
bool = __tuple_like_ext<_Up>::value>
64-
struct __tuple_convertible : public false_type {};
65-
66-
template <class _Tp, class _Up>
67-
struct __tuple_convertible<_Tp, _Up, true, true>
68-
: public __tuple_sfinae_base::__convertible< typename __make_tuple_types<_Tp>::type,
69-
typename __make_tuple_types<_Up>::type > {};
70-
7152
// __tuple_constructible
7253

7354
template <class _Tp,
@@ -81,19 +62,6 @@ struct __tuple_constructible<_Tp, _Up, true, true>
8162
: public __tuple_sfinae_base::__constructible< typename __make_tuple_types<_Tp>::type,
8263
typename __make_tuple_types<_Up>::type > {};
8364

84-
// __tuple_assignable
85-
86-
template <class _Tp,
87-
class _Up,
88-
bool = __tuple_like_ext<__libcpp_remove_reference_t<_Tp> >::value,
89-
bool = __tuple_like_ext<_Up>::value>
90-
struct __tuple_assignable : public false_type {};
91-
92-
template <class _Tp, class _Up>
93-
struct __tuple_assignable<_Tp, _Up, true, true>
94-
: public __tuple_sfinae_base::__assignable< typename __make_tuple_types<_Tp>::type,
95-
typename __make_tuple_types<_Up&>::type > {};
96-
9765
template <size_t _Ip, class... _Tp>
9866
struct _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, tuple<_Tp...> > {
9967
typedef _LIBCPP_NODEBUG typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type;

libcxx/test/libcxx/utilities/tuple/tuple.tuple/tuple.assign/tuple_array_template_depth.pass.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
// template <class... Types> class tuple;
1414

15-
// template <class Tuple, __tuple_assignable<Tuple, tuple> >
15+
// template <tuple-like Tuple>
1616
// tuple & operator=(Tuple &&);
1717

1818
// This test checks that we do not evaluate __make_tuple_types

0 commit comments

Comments
 (0)