Skip to content

Commit 0eebb48

Browse files
authored
[libc++] Merge is_member{,_object,_function}_pointer.h (#98727)
The implementations for these traits have been simplified quite a bit, since we have builtins available for them now.
1 parent dba2e66 commit 0eebb48

File tree

7 files changed

+13
-70
lines changed

7 files changed

+13
-70
lines changed

libcxx/include/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -777,8 +777,6 @@ set(files
777777
__type_traits/is_implicitly_default_constructible.h
778778
__type_traits/is_integral.h
779779
__type_traits/is_literal_type.h
780-
__type_traits/is_member_function_pointer.h
781-
__type_traits/is_member_object_pointer.h
782780
__type_traits/is_member_pointer.h
783781
__type_traits/is_nothrow_assignable.h
784782
__type_traits/is_nothrow_constructible.h

libcxx/include/__type_traits/invoke.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
#include <__type_traits/integral_constant.h>
1818
#include <__type_traits/is_base_of.h>
1919
#include <__type_traits/is_core_convertible.h>
20-
#include <__type_traits/is_member_function_pointer.h>
21-
#include <__type_traits/is_member_object_pointer.h>
20+
#include <__type_traits/is_member_pointer.h>
2221
#include <__type_traits/is_reference_wrapper.h>
2322
#include <__type_traits/is_same.h>
2423
#include <__type_traits/is_void.h>

libcxx/include/__type_traits/is_member_function_pointer.h

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

libcxx/include/__type_traits/is_member_object_pointer.h

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

libcxx/include/__type_traits/is_member_pointer.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD
2121
template <class _Tp>
2222
struct _LIBCPP_TEMPLATE_VIS is_member_pointer : _BoolConstant<__is_member_pointer(_Tp)> {};
2323

24+
template <class _Tp>
25+
struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer : _BoolConstant<__is_member_object_pointer(_Tp)> {};
26+
27+
template <class _Tp>
28+
struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer : _BoolConstant<__is_member_function_pointer(_Tp)> {};
29+
2430
# if _LIBCPP_STD_VER >= 17
2531
template <class _Tp>
2632
inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp);
33+
34+
template <class _Tp>
35+
inline constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Tp);
36+
37+
template <class _Tp>
38+
inline constexpr bool is_member_function_pointer_v = __is_member_function_pointer(_Tp);
2739
# endif
2840

2941
_LIBCPP_END_NAMESPACE_STD

libcxx/include/module.modulemap

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1962,8 +1962,6 @@ module std_private_type_traits_is_fundamental [system
19621962
module std_private_type_traits_is_implicitly_default_constructible [system] { header "__type_traits/is_implicitly_default_constructible.h" }
19631963
module std_private_type_traits_is_integral [system] { header "__type_traits/is_integral.h" }
19641964
module std_private_type_traits_is_literal_type [system] { header "__type_traits/is_literal_type.h" }
1965-
module std_private_type_traits_is_member_function_pointer [system] { header "__type_traits/is_member_function_pointer.h" }
1966-
module std_private_type_traits_is_member_object_pointer [system] { header "__type_traits/is_member_object_pointer.h" }
19671965
module std_private_type_traits_is_member_pointer [system] { header "__type_traits/is_member_pointer.h" }
19681966
module std_private_type_traits_is_nothrow_assignable [system] { header "__type_traits/is_nothrow_assignable.h" }
19691967
module std_private_type_traits_is_nothrow_constructible [system] {

libcxx/include/type_traits

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,8 +467,6 @@ namespace std
467467
#include <__type_traits/is_implicitly_default_constructible.h>
468468
#include <__type_traits/is_integral.h>
469469
#include <__type_traits/is_literal_type.h>
470-
#include <__type_traits/is_member_function_pointer.h>
471-
#include <__type_traits/is_member_object_pointer.h>
472470
#include <__type_traits/is_member_pointer.h>
473471
#include <__type_traits/is_nothrow_assignable.h>
474472
#include <__type_traits/is_nothrow_constructible.h>

0 commit comments

Comments
 (0)