mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 00:32:25 -04:00
libcxx-compat: revert llvmorg-19-init-17727-g0eebb48fcfbc:
[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.
PR: 280562
MFC after: 1 month
This commit is contained in:
parent
0bec0529b1
commit
e8847079df
6 changed files with 68 additions and 13 deletions
|
|
@ -17,7 +17,8 @@
|
|||
#include <__type_traits/integral_constant.h>
|
||||
#include <__type_traits/is_base_of.h>
|
||||
#include <__type_traits/is_core_convertible.h>
|
||||
#include <__type_traits/is_member_pointer.h>
|
||||
#include <__type_traits/is_member_function_pointer.h>
|
||||
#include <__type_traits/is_member_object_pointer.h>
|
||||
#include <__type_traits/is_reference_wrapper.h>
|
||||
#include <__type_traits/is_same.h>
|
||||
#include <__type_traits/is_void.h>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___TYPE_TRAITS_IS_MEMBER_FUNCTION_POINTER_H
|
||||
#define _LIBCPP___TYPE_TRAITS_IS_MEMBER_FUNCTION_POINTER_H
|
||||
|
||||
#include <__config>
|
||||
#include <__type_traits/integral_constant.h>
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# pragma GCC system_header
|
||||
#endif
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer : _BoolConstant<__is_member_function_pointer(_Tp)> {};
|
||||
|
||||
# if _LIBCPP_STD_VER >= 17
|
||||
template <class _Tp>
|
||||
inline constexpr bool is_member_function_pointer_v = __is_member_function_pointer(_Tp);
|
||||
# endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
#endif // _LIBCPP___TYPE_TRAITS_IS_MEMBER_FUNCTION_POINTER_H
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___TYPE_TRAITS_IS_MEMBER_OBJECT_POINTER_H
|
||||
#define _LIBCPP___TYPE_TRAITS_IS_MEMBER_OBJECT_POINTER_H
|
||||
|
||||
#include <__config>
|
||||
#include <__type_traits/integral_constant.h>
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# pragma GCC system_header
|
||||
#endif
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer : _BoolConstant<__is_member_object_pointer(_Tp)> {};
|
||||
|
||||
# if _LIBCPP_STD_VER >= 17
|
||||
template <class _Tp>
|
||||
inline constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Tp);
|
||||
# endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
#endif // _LIBCPP___TYPE_TRAITS_IS_MEMBER_FUNCTION_POINTER_H
|
||||
|
|
@ -21,21 +21,9 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
|||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS is_member_pointer : _BoolConstant<__is_member_pointer(_Tp)> {};
|
||||
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer : _BoolConstant<__is_member_object_pointer(_Tp)> {};
|
||||
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer : _BoolConstant<__is_member_function_pointer(_Tp)> {};
|
||||
|
||||
# if _LIBCPP_STD_VER >= 17
|
||||
template <class _Tp>
|
||||
inline constexpr bool is_member_pointer_v = __is_member_pointer(_Tp);
|
||||
|
||||
template <class _Tp>
|
||||
inline constexpr bool is_member_object_pointer_v = __is_member_object_pointer(_Tp);
|
||||
|
||||
template <class _Tp>
|
||||
inline constexpr bool is_member_function_pointer_v = __is_member_function_pointer(_Tp);
|
||||
# endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
|
|
|||
|
|
@ -1976,6 +1976,8 @@ module std_private_type_traits_is_implicitly_default_constructible [system
|
|||
}
|
||||
module std_private_type_traits_is_integral [system] { header "__type_traits/is_integral.h" }
|
||||
module std_private_type_traits_is_literal_type [system] { header "__type_traits/is_literal_type.h" }
|
||||
module std_private_type_traits_is_member_function_pointer [system] { header "__type_traits/is_member_function_pointer.h" }
|
||||
module std_private_type_traits_is_member_object_pointer [system] { header "__type_traits/is_member_object_pointer.h" }
|
||||
module std_private_type_traits_is_member_pointer [system] { header "__type_traits/is_member_pointer.h" }
|
||||
module std_private_type_traits_is_nothrow_assignable [system] { header "__type_traits/is_nothrow_assignable.h" }
|
||||
module std_private_type_traits_is_nothrow_constructible [system] {
|
||||
|
|
|
|||
|
|
@ -453,6 +453,8 @@ namespace std
|
|||
#include <__type_traits/is_fundamental.h>
|
||||
#include <__type_traits/is_integral.h>
|
||||
#include <__type_traits/is_literal_type.h>
|
||||
#include <__type_traits/is_member_function_pointer.h>
|
||||
#include <__type_traits/is_member_object_pointer.h>
|
||||
#include <__type_traits/is_member_pointer.h>
|
||||
#include <__type_traits/is_nothrow_assignable.h>
|
||||
#include <__type_traits/is_nothrow_constructible.h>
|
||||
|
|
|
|||
Loading…
Reference in a new issue