mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-10-08 11:44:05 +00:00
[libc++] [P0619] Add _LIBCPP_ABI_NO_BINDER_BASES and remove binder typedefs in C++20.
Differential Revision: https://reviews.llvm.org/D103753
This commit is contained in:
parent
3302af9d4c
commit
dc066888bd
@ -43,7 +43,7 @@ Paper Status
|
||||
.. [#note-P0600] P0600: The missing bits in P0600 are in |sect|\ [mem.res.class], |sect|\ [mem.poly.allocator.class], and |sect|\ [container.node.overview].
|
||||
.. [#note-P0966] P0966: It was previously erroneously marked as complete in version 8.0. See `bug 45368 <https://llvm.org/PR45368>`__.
|
||||
|
||||
.. [#note-P0619] P0619: Only sections D.9 and D.10 are implemented. Section D.8 is partly implemented. Sections D.4, D.7, D.11, D.12, and D.14 remain undone.
|
||||
.. [#note-P0619] P0619: Only sections D.8, D.9, and D.10 are implemented. Sections D.4, D.7, D.11, D.12, and D.14 remain undone.
|
||||
|
||||
|
||||
.. _issues-status-cxx2a:
|
||||
|
@ -256,6 +256,11 @@ C++20 Specific Configuration Macros:
|
||||
It also re-enables the library-provided explicit specializations
|
||||
of `allocator<void>` and `allocator<const void>`.
|
||||
|
||||
**_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS**:
|
||||
This macro is used to re-enable the `argument_type`, `result_type`,
|
||||
`first_argument_type`, and `second_argument_type` members of class
|
||||
templates such as `plus`, `logical_not`, `hash`, and `owner_less`.
|
||||
|
||||
**_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS**:
|
||||
This macro is used to re-enable `not1`, `not2`, `unary_negate`,
|
||||
and `binary_negate`.
|
||||
|
@ -94,6 +94,9 @@
|
||||
# define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION
|
||||
// Enable optimized version of __do_get_(un)signed which avoids redundant copies.
|
||||
# define _LIBCPP_ABI_OPTIMIZED_LOCALE_NUM_GET
|
||||
// In C++20 and later, don't derive std::plus from std::binary_function,
|
||||
// nor std::negate from std::unary_function.
|
||||
# define _LIBCPP_ABI_NO_BINDER_BASES
|
||||
// Give reverse_iterator<T> one data member of type T, not two.
|
||||
// Also, in C++17 and later, don't derive iterator types from std::iterator.
|
||||
# define _LIBCPP_ABI_NO_ITERATOR_BASES
|
||||
@ -1360,6 +1363,7 @@ extern "C" _LIBCPP_FUNC_VIS void __sanitizer_annotate_contiguous_container(
|
||||
|
||||
#if defined(_LIBCPP_ENABLE_CXX20_REMOVED_FEATURES)
|
||||
#define _LIBCPP_ENABLE_CXX20_REMOVED_ALLOCATOR_MEMBERS
|
||||
#define _LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
|
||||
#define _LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS
|
||||
#define _LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR
|
||||
#endif // _LIBCPP_ENABLE_CXX20_REMOVED_FEATURES
|
||||
|
@ -42,14 +42,24 @@ public:
|
||||
static const bool value = sizeof(__test<_Tp>(0)) == 1;
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS less : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS less
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x < __y;}
|
||||
@ -373,7 +383,9 @@ struct __invoke_void_return_wrapper<_Ret, true>
|
||||
|
||||
template <class _Tp>
|
||||
class _LIBCPP_TEMPLATE_VIS reference_wrapper
|
||||
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public __weak_result_type<_Tp>
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
// types
|
||||
|
@ -1594,11 +1594,20 @@ template <class _Tp = void> struct owner_less;
|
||||
template <class _Tp> struct owner_less;
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS owner_less<shared_ptr<_Tp> >
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<shared_ptr<_Tp>, shared_ptr<_Tp>, bool>
|
||||
#endif
|
||||
{
|
||||
typedef bool result_type;
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef shared_ptr<_Tp> first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef shared_ptr<_Tp> second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(shared_ptr<_Tp> const& __x, shared_ptr<_Tp> const& __y) const _NOEXCEPT
|
||||
{return __x.owner_before(__y);}
|
||||
@ -1610,11 +1619,19 @@ struct _LIBCPP_TEMPLATE_VIS owner_less<shared_ptr<_Tp> >
|
||||
{return __x.owner_before(__y);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS owner_less<weak_ptr<_Tp> >
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<weak_ptr<_Tp>, weak_ptr<_Tp>, bool>
|
||||
#endif
|
||||
{
|
||||
typedef bool result_type;
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef weak_ptr<_Tp> first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef weak_ptr<_Tp> second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()( weak_ptr<_Tp> const& __x, weak_ptr<_Tp> const& __y) const _NOEXCEPT
|
||||
{return __x.owner_before(__y);}
|
||||
@ -1690,11 +1707,13 @@ template <class _Tp> struct _LIBCPP_TEMPLATE_VIS hash;
|
||||
template <class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<shared_ptr<_Tp> >
|
||||
{
|
||||
typedef shared_ptr<_Tp> argument_type;
|
||||
typedef size_t result_type;
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef shared_ptr<_Tp> argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
#endif
|
||||
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
result_type operator()(const argument_type& __ptr) const _NOEXCEPT
|
||||
size_t operator()(const shared_ptr<_Tp>& __ptr) const _NOEXCEPT
|
||||
{
|
||||
return hash<typename shared_ptr<_Tp>::element_type*>()(__ptr.get());
|
||||
}
|
||||
|
@ -750,12 +750,15 @@ struct _LIBCPP_TEMPLATE_VIS hash<__enable_hash_helper<
|
||||
unique_ptr<_Tp, _Dp>, typename unique_ptr<_Tp, _Dp>::pointer> >
|
||||
#endif
|
||||
{
|
||||
typedef unique_ptr<_Tp, _Dp> argument_type;
|
||||
typedef size_t result_type;
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef unique_ptr<_Tp, _Dp> argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
#endif
|
||||
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
result_type operator()(const argument_type& __ptr) const
|
||||
size_t operator()(const unique_ptr<_Tp, _Dp>& __ptr) const
|
||||
{
|
||||
typedef typename argument_type::pointer pointer;
|
||||
typedef typename unique_ptr<_Tp, _Dp>::pointer pointer;
|
||||
return hash<pointer>()(__ptr.get());
|
||||
}
|
||||
};
|
||||
|
@ -76,116 +76,97 @@ template <class T> using unwrap_reference_t = typename unwrap_reference<T>::type
|
||||
template <class T> using unwrap_ref_decay_t = typename unwrap_ref_decay<T>::type; // since C++20
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct plus : binary_function<T, T, T>
|
||||
{
|
||||
struct plus {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct minus : binary_function<T, T, T>
|
||||
{
|
||||
struct minus {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct multiplies : binary_function<T, T, T>
|
||||
{
|
||||
struct multiplies {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct divides : binary_function<T, T, T>
|
||||
{
|
||||
struct divides {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct modulus : binary_function<T, T, T>
|
||||
{
|
||||
struct modulus {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct negate : unary_function<T, T>
|
||||
{
|
||||
struct negate {
|
||||
T operator()(const T& x) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct equal_to : binary_function<T, T, bool>
|
||||
{
|
||||
struct equal_to {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct not_equal_to : binary_function<T, T, bool>
|
||||
{
|
||||
struct not_equal_to {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct greater : binary_function<T, T, bool>
|
||||
{
|
||||
struct greater {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct less : binary_function<T, T, bool>
|
||||
{
|
||||
struct less {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct greater_equal : binary_function<T, T, bool>
|
||||
{
|
||||
struct greater_equal {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct less_equal : binary_function<T, T, bool>
|
||||
{
|
||||
struct less_equal {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct logical_and : binary_function<T, T, bool>
|
||||
{
|
||||
struct logical_and {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct logical_or : binary_function<T, T, bool>
|
||||
{
|
||||
struct logical_or {
|
||||
bool operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct logical_not : unary_function<T, bool>
|
||||
{
|
||||
struct logical_not {
|
||||
bool operator()(const T& x) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct bit_and : binary_function<T, T, T>
|
||||
{
|
||||
struct bit_and {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct bit_or : binary_function<T, T, T>
|
||||
{
|
||||
struct bit_or {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T> // <class T=void> in C++14
|
||||
struct bit_xor : binary_function<T, T, T>
|
||||
{
|
||||
struct bit_xor {
|
||||
T operator()(const T& x, const T& y) const;
|
||||
};
|
||||
|
||||
template <class T=void> // C++14
|
||||
struct bit_not : unary_function<T, T>
|
||||
{
|
||||
struct bit_not {
|
||||
T operator()(const T& x) const;
|
||||
};
|
||||
|
||||
@ -524,14 +505,24 @@ POLICY: For non-variadic implementations, the number of arguments is limited
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS plus : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS plus
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x + __y;}
|
||||
@ -552,14 +543,24 @@ struct _LIBCPP_TEMPLATE_VIS plus<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS minus : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS minus
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x - __y;}
|
||||
@ -580,14 +581,24 @@ struct _LIBCPP_TEMPLATE_VIS minus<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS multiplies : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS multiplies
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x * __y;}
|
||||
@ -608,14 +619,24 @@ struct _LIBCPP_TEMPLATE_VIS multiplies<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS divides : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS divides
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x / __y;}
|
||||
@ -636,14 +657,24 @@ struct _LIBCPP_TEMPLATE_VIS divides<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS modulus : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS modulus
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x % __y;}
|
||||
@ -664,14 +695,23 @@ struct _LIBCPP_TEMPLATE_VIS modulus<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS negate : unary_function<_Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS negate
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: unary_function<_Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x) const
|
||||
{return -__x;}
|
||||
@ -692,14 +732,24 @@ struct _LIBCPP_TEMPLATE_VIS negate<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS equal_to : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS equal_to
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x == __y;}
|
||||
@ -720,14 +770,24 @@ struct _LIBCPP_TEMPLATE_VIS equal_to<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS not_equal_to : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS not_equal_to
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x != __y;}
|
||||
@ -748,14 +808,24 @@ struct _LIBCPP_TEMPLATE_VIS not_equal_to<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS greater
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x > __y;}
|
||||
@ -778,14 +848,25 @@ struct _LIBCPP_TEMPLATE_VIS greater<void>
|
||||
|
||||
// less in <__functional_base>
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS greater_equal
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x >= __y;}
|
||||
@ -806,14 +887,24 @@ struct _LIBCPP_TEMPLATE_VIS greater_equal<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS less_equal : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS less_equal
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x <= __y;}
|
||||
@ -834,14 +925,24 @@ struct _LIBCPP_TEMPLATE_VIS less_equal<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS logical_and : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS logical_and
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x && __y;}
|
||||
@ -862,14 +963,24 @@ struct _LIBCPP_TEMPLATE_VIS logical_and<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS logical_or : binary_function<_Tp, _Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS logical_or
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x || __y;}
|
||||
@ -890,14 +1001,23 @@ struct _LIBCPP_TEMPLATE_VIS logical_or<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS logical_not : unary_function<_Tp, bool>
|
||||
struct _LIBCPP_TEMPLATE_VIS logical_not
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: unary_function<_Tp, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef bool __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const _Tp& __x) const
|
||||
{return !__x;}
|
||||
@ -918,14 +1038,24 @@ struct _LIBCPP_TEMPLATE_VIS logical_not<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_and : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_and
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x & __y;}
|
||||
@ -946,14 +1076,24 @@ struct _LIBCPP_TEMPLATE_VIS bit_and<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_or : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_or
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x | __y;}
|
||||
@ -974,14 +1114,24 @@ struct _LIBCPP_TEMPLATE_VIS bit_or<void>
|
||||
#endif
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
template <class _Tp = void>
|
||||
#else
|
||||
template <class _Tp>
|
||||
#endif
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_xor : binary_function<_Tp, _Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_xor
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: binary_function<_Tp, _Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
typedef _Tp __result_type; // used by valarray
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x, const _Tp& __y) const
|
||||
{return __x ^ __y;}
|
||||
@ -1003,9 +1153,18 @@ struct _LIBCPP_TEMPLATE_VIS bit_xor<void>
|
||||
|
||||
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp = void>
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_not : unary_function<_Tp, _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS bit_not
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: unary_function<_Tp, _Tp>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY
|
||||
_Tp operator()(const _Tp& __x) const
|
||||
{return ~__x;}
|
||||
@ -1307,7 +1466,9 @@ mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const)
|
||||
|
||||
template <class _Tp>
|
||||
class __mem_fn
|
||||
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public __weak_result_type<_Tp>
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
// types
|
||||
@ -2354,8 +2515,10 @@ public:
|
||||
|
||||
template<class _Rp, class ..._ArgTypes>
|
||||
class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)>
|
||||
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>,
|
||||
public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)>
|
||||
#endif
|
||||
{
|
||||
#ifndef _LIBCPP_ABI_OPTIMIZED_FUNCTION
|
||||
typedef __function::__value_func<_Rp(_ArgTypes...)> __func;
|
||||
@ -2884,7 +3047,9 @@ __apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>,
|
||||
|
||||
template<class _Fp, class ..._BoundArgs>
|
||||
class __bind
|
||||
#if _LIBCPP_STD_VER <= 17 || !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public __weak_result_type<typename decay<_Fp>::type>
|
||||
#endif
|
||||
{
|
||||
protected:
|
||||
typedef typename decay<_Fp>::type _Fd;
|
||||
|
@ -43,7 +43,6 @@ public:
|
||||
typedef INSERT_RETURN_TYPE<iterator, node_type> insert_return_type; // C++17
|
||||
|
||||
class value_compare
|
||||
: public binary_function<value_type, value_type, bool>
|
||||
{
|
||||
friend class map;
|
||||
protected:
|
||||
@ -51,6 +50,9 @@ public:
|
||||
|
||||
value_compare(key_compare c);
|
||||
public:
|
||||
typedef bool result_type; // deprecated in C++17, removed in C++20
|
||||
typedef value_type first_argument_type; // deprecated in C++17, removed in C++20
|
||||
typedef value_type second_argument_type; // deprecated in C++17, removed in C++20
|
||||
bool operator()(const value_type& x, const value_type& y) const;
|
||||
};
|
||||
|
||||
@ -287,13 +289,15 @@ public:
|
||||
typedef unspecified node_type; // C++17
|
||||
|
||||
class value_compare
|
||||
: public binary_function<value_type,value_type,bool>
|
||||
{
|
||||
friend class multimap;
|
||||
protected:
|
||||
key_compare comp;
|
||||
value_compare(key_compare c);
|
||||
public:
|
||||
typedef bool result_type; // deprecated in C++17, removed in C++20
|
||||
typedef value_type first_argument_type; // deprecated in C++17, removed in C++20
|
||||
typedef value_type second_argument_type; // deprecated in C++17, removed in C++20
|
||||
bool operator()(const value_type& x, const value_type& y) const;
|
||||
};
|
||||
|
||||
@ -922,15 +926,24 @@ public:
|
||||
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
|
||||
"Allocator::value_type must be same type as value_type");
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
class _LIBCPP_TEMPLATE_VIS value_compare
|
||||
#if defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
: public binary_function<value_type, value_type, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
friend class map;
|
||||
protected:
|
||||
key_compare comp;
|
||||
|
||||
_LIBCPP_INLINE_VISIBILITY value_compare(key_compare c) : comp(c) {}
|
||||
public:
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef value_type first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef value_type second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const value_type& __x, const value_type& __y) const
|
||||
{return comp(__x.first, __y.first);}
|
||||
@ -1696,9 +1709,13 @@ public:
|
||||
static_assert((is_same<typename allocator_type::value_type, value_type>::value),
|
||||
"Allocator::value_type must be same type as value_type");
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
class _LIBCPP_TEMPLATE_VIS value_compare
|
||||
#if defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
: public binary_function<value_type, value_type, bool>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
friend class multimap;
|
||||
protected:
|
||||
key_compare comp;
|
||||
@ -1706,6 +1723,11 @@ public:
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
value_compare(key_compare c) : comp(c) {}
|
||||
public:
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef value_type first_argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef value_type second_argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
bool operator()(const value_type& __x, const value_type& __y) const
|
||||
{return comp(__x.first, __y.first);}
|
||||
|
@ -1407,11 +1407,13 @@ struct _LIBCPP_TEMPLATE_VIS hash<
|
||||
__enable_hash_helper<optional<_Tp>, remove_const_t<_Tp>>
|
||||
>
|
||||
{
|
||||
typedef optional<_Tp> argument_type;
|
||||
typedef size_t result_type;
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef optional<_Tp> argument_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
#endif
|
||||
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
result_type operator()(const argument_type& __opt) const
|
||||
size_t operator()(const optional<_Tp>& __opt) const
|
||||
{
|
||||
return static_cast<bool>(__opt) ? hash<remove_const_t<_Tp>>()(*__opt) : 0;
|
||||
}
|
||||
|
@ -1298,10 +1298,18 @@ __murmur2_or_cityhash<_Size, 64>::operator()(const void* __key, _Size __len)
|
||||
template <class _Tp, size_t = sizeof(_Tp) / sizeof(size_t)>
|
||||
struct __scalar_hash;
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct __scalar_hash<_Tp, 0>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1316,10 +1324,18 @@ struct __scalar_hash<_Tp, 0>
|
||||
}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct __scalar_hash<_Tp, 1>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1333,10 +1349,18 @@ struct __scalar_hash<_Tp, 1>
|
||||
}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct __scalar_hash<_Tp, 2>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1354,10 +1378,18 @@ struct __scalar_hash<_Tp, 2>
|
||||
}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct __scalar_hash<_Tp, 3>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1376,10 +1408,18 @@ struct __scalar_hash<_Tp, 3>
|
||||
}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp>
|
||||
struct __scalar_hash<_Tp, 4>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1411,10 +1451,18 @@ inline size_t __hash_combine(size_t __lhs, size_t __rhs) _NOEXCEPT {
|
||||
return _HashT()(__p);
|
||||
}
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template<class _Tp>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<_Tp*>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp*, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp* argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp* __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1428,44 +1476,83 @@ struct _LIBCPP_TEMPLATE_VIS hash<_Tp*>
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<bool>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<bool, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef bool argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(bool __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<char>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<char, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef char argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<signed char>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<signed char, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef signed char argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(signed char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<unsigned char>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<unsigned char, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned char argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
#ifndef _LIBCPP_HAS_NO_CHAR8_T
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<char8_t>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<char8_t, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef char8_t argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(char8_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
@ -1473,76 +1560,148 @@ struct _LIBCPP_TEMPLATE_VIS hash<char8_t>
|
||||
|
||||
#ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<char16_t>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<char16_t, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef char16_t argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<char32_t>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<char32_t, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef char32_t argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
#endif // _LIBCPP_HAS_NO_UNICODE_CHARS
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<wchar_t>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<wchar_t, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef wchar_t argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<short>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<short, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef short argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(short __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<unsigned short>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<unsigned short, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned short argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<int>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<int, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef int argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(int __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<unsigned int>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<unsigned int, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned int argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<long>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<long, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef long argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(long __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<unsigned long>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<unsigned long, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef unsigned long argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
|
||||
};
|
||||
@ -1655,10 +1814,18 @@ struct _LIBCPP_TEMPLATE_VIS hash<long double>
|
||||
|
||||
#if _LIBCPP_STD_VER > 11
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <class _Tp, bool = is_enum<_Tp>::value>
|
||||
struct _LIBCPP_TEMPLATE_VIS __enum_hash
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<_Tp, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef _Tp argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(_Tp __v) const _NOEXCEPT
|
||||
{
|
||||
@ -1681,14 +1848,22 @@ struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp>
|
||||
|
||||
#if _LIBCPP_STD_VER > 14
|
||||
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
||||
template <>
|
||||
struct _LIBCPP_TEMPLATE_VIS hash<nullptr_t>
|
||||
#if !defined(_LIBCPP_ABI_NO_BINDER_BASES)
|
||||
: public unary_function<nullptr_t, size_t>
|
||||
#endif
|
||||
{
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(nullptr_t) const _NOEXCEPT {
|
||||
return 662607004ull;
|
||||
}
|
||||
_LIBCPP_SUPPRESS_DEPRECATED_POP
|
||||
#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS)
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef size_t result_type;
|
||||
_LIBCPP_DEPRECATED_IN_CXX17 typedef nullptr_t argument_type;
|
||||
#endif
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
size_t operator()(nullptr_t) const _NOEXCEPT {
|
||||
return 662607004ull;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -0,0 +1,125 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// <functional>
|
||||
|
||||
// UNSUPPORTED: c++03, c++11, c++14
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
|
||||
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <utility>
|
||||
#include "test_macros.h"
|
||||
|
||||
void test_functional()
|
||||
{
|
||||
{
|
||||
using T = std::plus<int>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::first_argument_type b; // expected-warning {{is deprecated}}
|
||||
T::second_argument_type c; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
(void)c;
|
||||
}
|
||||
{
|
||||
using T = std::less<int>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::first_argument_type b; // expected-warning {{is deprecated}}
|
||||
T::second_argument_type c; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
(void)c;
|
||||
}
|
||||
{
|
||||
using T = std::logical_not<int>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::argument_type b; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
}
|
||||
}
|
||||
|
||||
void test_owner_less()
|
||||
{
|
||||
{
|
||||
using T = std::owner_less<std::shared_ptr<int>>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::first_argument_type b; // expected-warning {{is deprecated}}
|
||||
T::second_argument_type c; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
(void)c;
|
||||
}
|
||||
{
|
||||
using T = std::owner_less<std::weak_ptr<int>>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::first_argument_type b; // expected-warning {{is deprecated}}
|
||||
T::second_argument_type c; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
(void)c;
|
||||
}
|
||||
}
|
||||
|
||||
void test_hash()
|
||||
{
|
||||
{
|
||||
using T = std::hash<int>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::argument_type b; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
}
|
||||
{
|
||||
using T = std::hash<std::shared_ptr<int>>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::argument_type b; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
}
|
||||
{
|
||||
using T = std::hash<std::unique_ptr<int>>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::argument_type b; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
}
|
||||
{
|
||||
using T = std::hash<std::optional<int>>;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::argument_type b; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
}
|
||||
}
|
||||
|
||||
void test_map()
|
||||
{
|
||||
{
|
||||
using T = std::map<int, int>::value_compare;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::first_argument_type b; // expected-warning {{is deprecated}}
|
||||
T::second_argument_type c; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
(void)c;
|
||||
}
|
||||
{
|
||||
using T = std::multimap<int, int>::value_compare;
|
||||
T::result_type a; // expected-warning {{is deprecated}}
|
||||
T::first_argument_type b; // expected-warning {{is deprecated}}
|
||||
T::second_argument_type c; // expected-warning {{is deprecated}}
|
||||
(void)a;
|
||||
(void)b;
|
||||
(void)c;
|
||||
}
|
||||
}
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// REQUIRES: c++03 || c++11 || c++14 || c++17
|
||||
|
||||
// <functional>
|
||||
|
||||
// reference_wrapper
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// REQUIRES: c++03 || c++11 || c++14 || c++17
|
||||
|
||||
// <functional>
|
||||
|
||||
// reference_wrapper
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// divides
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::divides<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 4) == 9);
|
||||
#if TEST_STD_VER > 11
|
||||
typedef std::divides<> F2;
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// minus
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::minus<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(3, 2) == 1);
|
||||
#if TEST_STD_VER > 11
|
||||
typedef std::minus<> F2;
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// modulus
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::modulus<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 8) == 4);
|
||||
#if TEST_STD_VER > 11
|
||||
typedef std::modulus<> F2;
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// multiplies
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::multiplies<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(3, 2) == 6);
|
||||
#if TEST_STD_VER > 11
|
||||
typedef std::multiplies<> F2;
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// negate
|
||||
@ -20,8 +22,10 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::negate<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<F::argument_type, int>::value), "" );
|
||||
static_assert((std::is_same<F::result_type, int>::value), "" );
|
||||
#endif
|
||||
assert(f(36) == -36);
|
||||
#if TEST_STD_VER > 11
|
||||
typedef std::negate<> F2;
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// plus
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::plus<int> F;
|
||||
const F f = F();
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "");
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "");
|
||||
static_assert((std::is_same<int, F::result_type>::value), "");
|
||||
#endif
|
||||
assert(f(3, 2) == 5);
|
||||
#if TEST_STD_VER > 11
|
||||
typedef std::plus<> F2;
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// bit_and
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::bit_and<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(0xEA95, 0xEA95) == 0xEA95);
|
||||
assert(f(0xEA95, 0x58D3) == 0x4891);
|
||||
assert(f(0x58D3, 0xEA95) == 0x4891);
|
||||
|
@ -7,6 +7,8 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// UNSUPPORTED: c++03, c++11
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// bit_not
|
||||
@ -21,8 +23,10 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::bit_not<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<F::argument_type, int>::value), "" );
|
||||
static_assert((std::is_same<F::result_type, int>::value), "" );
|
||||
#endif
|
||||
assert((f(0xEA95) & 0xFFFF ) == 0x156A);
|
||||
assert((f(0x58D3) & 0xFFFF ) == 0xA72C);
|
||||
assert((f(0) & 0xFFFF ) == 0xFFFF);
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// bit_or
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::bit_or<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(0xEA95, 0xEA95) == 0xEA95);
|
||||
assert(f(0xEA95, 0x58D3) == 0xFAD7);
|
||||
assert(f(0x58D3, 0xEA95) == 0xFAD7);
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// bit_xor
|
||||
@ -21,9 +23,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::bit_xor<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(0xEA95, 0xEA95) == 0);
|
||||
assert(f(0xEA95, 0x58D3) == 0xB246);
|
||||
assert(f(0x58D3, 0xEA95) == 0xB246);
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// equal_to
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::equal_to<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 36));
|
||||
assert(!f(36, 6));
|
||||
#if TEST_STD_VER > 11
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// greater
|
||||
@ -21,9 +23,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::greater<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(!f(36, 36));
|
||||
assert(f(36, 6));
|
||||
assert(!f(6, 36));
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// greater_equal
|
||||
@ -21,9 +23,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::greater_equal<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 36));
|
||||
assert(f(36, 6));
|
||||
assert(!f(6, 36));
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// less
|
||||
@ -21,9 +23,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::less<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(!f(36, 36));
|
||||
assert(!f(36, 6));
|
||||
assert(f(6, 36));
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// less_equal
|
||||
@ -21,9 +23,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::less_equal<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 36));
|
||||
assert(!f(36, 6));
|
||||
assert(f(6, 36));
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// not_equal_to
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::not_equal_to<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(!f(36, 36));
|
||||
assert(f(36, 6));
|
||||
#if TEST_STD_VER > 11
|
||||
|
@ -70,7 +70,9 @@ public:
|
||||
template <class F, class return_type>
|
||||
void test_nullary_function ()
|
||||
{
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename F::result_type, return_type>::value), "" );
|
||||
#endif
|
||||
static_assert((!has_argument_type<F>::value), "" );
|
||||
static_assert((!has_first_argument_type<F>::value), "" );
|
||||
static_assert((!has_second_argument_type<F>::value), "" );
|
||||
@ -79,8 +81,10 @@ void test_nullary_function ()
|
||||
template <class F, class return_type, class arg_type>
|
||||
void test_unary_function ()
|
||||
{
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename F::result_type, return_type>::value), "" );
|
||||
static_assert((std::is_same<typename F::argument_type, arg_type>::value), "" );
|
||||
#endif
|
||||
static_assert((!has_first_argument_type<F>::value), "" );
|
||||
static_assert((!has_second_argument_type<F>::value), "" );
|
||||
}
|
||||
@ -88,16 +92,20 @@ void test_unary_function ()
|
||||
template <class F, class return_type, class arg_type1, class arg_type2>
|
||||
void test_binary_function ()
|
||||
{
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename F::result_type, return_type>::value), "" );
|
||||
static_assert((std::is_same<typename F::first_argument_type, arg_type1>::value), "" );
|
||||
static_assert((std::is_same<typename F::second_argument_type, arg_type2>::value), "" );
|
||||
#endif
|
||||
static_assert((!has_argument_type<F>::value), "" );
|
||||
}
|
||||
|
||||
template <class F, class return_type>
|
||||
void test_other_function ()
|
||||
{
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename F::result_type, return_type>::value), "" );
|
||||
#endif
|
||||
static_assert((!has_argument_type<F>::value), "" );
|
||||
static_assert((!has_first_argument_type<F>::value), "" );
|
||||
static_assert((!has_second_argument_type<F>::value), "" );
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// logical_and
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::logical_and<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 36));
|
||||
assert(!f(36, 0));
|
||||
assert(!f(0, 36));
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// logical_not
|
||||
@ -20,8 +22,10 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::logical_not<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<F::argument_type, int>::value), "" );
|
||||
static_assert((std::is_same<F::result_type, bool>::value), "" );
|
||||
#endif
|
||||
assert(!f(36));
|
||||
assert(f(0));
|
||||
#if TEST_STD_VER > 11
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// logical_or
|
||||
@ -20,9 +22,11 @@ int main(int, char**)
|
||||
{
|
||||
typedef std::logical_or<int> F;
|
||||
const F f = F();
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<int, F::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<int, F::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, F::result_type>::value), "" );
|
||||
#endif
|
||||
assert(f(36, 36));
|
||||
assert(f(36, 0));
|
||||
assert(f(0, 36));
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
// binary_negate
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
// not1
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
// not2
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
// unary_negate
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// UNSUPPORTED: c++03, c++11
|
||||
|
||||
// <functional>
|
||||
@ -33,8 +35,10 @@ void
|
||||
test()
|
||||
{
|
||||
typedef std::hash<T> H;
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "");
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "");
|
||||
#endif
|
||||
ASSERT_NOEXCEPT(H()(T()));
|
||||
typedef typename std::underlying_type<T>::type under_type;
|
||||
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// template <class T>
|
||||
@ -30,8 +32,10 @@ void
|
||||
test()
|
||||
{
|
||||
typedef std::hash<T> H;
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "");
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "");
|
||||
#endif
|
||||
ASSERT_NOEXCEPT(H()(T()));
|
||||
H h;
|
||||
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// template <class T>
|
||||
@ -28,8 +30,10 @@ void
|
||||
test()
|
||||
{
|
||||
typedef std::hash<T> H;
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "");
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "");
|
||||
#endif
|
||||
ASSERT_NOEXCEPT(H()(T()));
|
||||
H h;
|
||||
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <functional>
|
||||
|
||||
// template <class T>
|
||||
@ -29,8 +31,10 @@ void
|
||||
test()
|
||||
{
|
||||
typedef std::hash<T> H;
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "");
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "");
|
||||
#endif
|
||||
ASSERT_NOEXCEPT(H()(T()));
|
||||
H h;
|
||||
|
||||
@ -46,8 +50,10 @@ void test_nullptr()
|
||||
#if TEST_STD_VER > 14
|
||||
typedef std::nullptr_t T;
|
||||
typedef std::hash<T> H;
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<typename H::argument_type, T>::value), "" );
|
||||
static_assert((std::is_same<typename H::result_type, std::size_t>::value), "" );
|
||||
#endif
|
||||
ASSERT_NOEXCEPT(H()(T()));
|
||||
#endif
|
||||
}
|
||||
|
@ -6,6 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
// <memory>
|
||||
|
||||
// template <class T> struct owner_less;
|
||||
@ -65,9 +67,11 @@ int main(int, char**)
|
||||
typedef std::owner_less<std::shared_ptr<int> > CS;
|
||||
CS cs;
|
||||
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<std::shared_ptr<int>, CS::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<std::shared_ptr<int>, CS::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, CS::result_type>::value), "" );
|
||||
#endif
|
||||
|
||||
assert(!cs(p1, p2));
|
||||
assert(!cs(p2, p1));
|
||||
@ -86,9 +90,11 @@ int main(int, char**)
|
||||
typedef std::owner_less<std::weak_ptr<int> > CS;
|
||||
CS cs;
|
||||
|
||||
#if TEST_STD_VER <= 17
|
||||
static_assert((std::is_same<std::weak_ptr<int>, CS::first_argument_type>::value), "" );
|
||||
static_assert((std::is_same<std::weak_ptr<int>, CS::second_argument_type>::value), "" );
|
||||
static_assert((std::is_same<bool, CS::result_type>::value), "" );
|
||||
#endif
|
||||
|
||||
assert(!cs(w1, w2));
|
||||
assert(!cs(w2, w1));
|
||||
|
Loading…
Reference in New Issue
Block a user