std::pmr::operator==, std::pmr::operator!=

From cppreference.com
Memory management library
(exposition only*)
Uninitialized memory algorithms
(C++17)
(C++17)
(C++17)
(C++20)
Constrained uninitialized
memory algorithms
(C++20)
C Library

Allocators
(C++11)
(C++11)
Memory resources
Garbage collection support
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
Uninitialized storage
(until C++20*)
(until C++20*)
(until C++20*)
Explicit lifetime management
Defined in header <memory_resource>
template < class T1, class T2 >

bool operator== ( const std::pmr::polymorphic_allocator <T1> & lhs,

const std::pmr::polymorphic_allocator <T2> & rhs ) noexcept ;
(1) (since C++17)
friend bool operator== ( const polymorphic_allocator& lhs,
const polymorphic_allocator& rhs ) noexcept ;
(2) (since C++17)
template < class T1, class T2 >

bool operator! = ( const std::pmr::polymorphic_allocator <T1> & lhs,

const std::pmr::polymorphic_allocator <T2> & rhs ) noexcept ;
(3) (since C++17)
(until C++20)
friend bool operator! = ( const polymorphic_allocator& lhs,
const polymorphic_allocator& rhs ) noexcept ;
(4) (since C++17)
(until C++20)

Compares two polymorphic allocators. Two polymorphic allocators compare equal if their underlying memory resource compares equal.

1) Returns *lhs.resource ( ) == *rhs.resource ( )
2) Same as (1), allowing conversion to polymorphic_allocator.
This function is not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup
3) Returns !(lhs == rhs).
4) Same as (3), allowing conversion to polymorphic_allocator.
This function is not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup

The != operator is synthesized from operator==.

(since C++20)

Parameters

lhs, rhs - polymorphic allocators to compare

Return value

1,2) *lhs.resource ( ) == *rhs.resource ( )
3,4) !(lhs == rhs)

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 3683 C++17 polymorphic_allocator could not be compared with types convertible to it overload added