std::weak_equal
From cppreference.com
Defined in header <compare>


template< class T > constexpr std::weak_equality weak_equal(const T& a, const T& b); 
(since C++20)  
Compares two values using 3way comparison and produces a result of type std::weak_equality
Specifically,
 If the expression a <=> b is wellformed and its result is convertible to std::weak_equality, returns that result.
 Otherwise, if the expression a <=> b is wellformed, but its result is not convertible to std::weak_equality, then the function is defined as deleted.
 Otherwise, if the expression a <=> b is illformed, but the expression a == b is wellformed and convertible to bool,
 if a == b is true, returns std::weak_equality::equivalent
 otherwise, returns std::weak_equality::nonequivalent
 Otherwise, the function is defined as deleted.
Parameters
a, b    values to compare 
Return value
A value of type std::weak_equality, as described above.
Notes
Example
This section is incomplete Reason: no example 
See also
(C++20) 
the result type of 3way comparison that supports only equality/inequality and is not substitutable (class) 
(C++20) 
performs 3way comparison and produces a result of type std::strong_equality (function template) 
(C++20) 
performs 3way comparison and produces a result of type std::strong_ordering (function template) 
(C++20) 
performs 3way comparison and produces a result of type std::partial_ordering (function template) 
(C++20) 
performs 3way comparison and produces a result of type std::weak_ordering (function template) 