std::shared_ptr::operator==, !=, <, <=, >, >=
From cppreference.com
< cpp | memory | shared ptr
Compare two shared_ptr objects |
||
template < class T, class U > bool operator==( const shared_ptr<T>& lhs, const shared_ptr<U>& rhs ); |
(1) | (since C++11) |
template< class T, class U > bool operator!=( const shared_ptr<T>& lhs, const shared_ptr<U>& rhs ); |
(2) | (since C++11) |
template< class T, class U > bool operator<( const shared_ptr<T>& lhs, const shared_ptr<U>& rhs ); |
(3) | (since C++11) |
template< class T, class U > bool operator>( const shared_ptr<T>& lhs, const shared_ptr<U>& rhs ); |
(4) | (since C++11) |
template< class T, class U > bool operator<=( const shared_ptr<T>& lhs, const shared_ptr<U>& rhs ); |
(5) | (since C++11) |
template< class T, class U > bool operator>=( const shared_ptr<T>& lhs, const shared_ptr<U>& rhs ); |
(6) | (since C++11) |
Compare a shared_ptr with a null pointer |
||
template< class T > bool operator==( const shared_ptr<T>& lhs, std::nullptr_t rhs ); |
(7) | (since C++11) |
template< class T > bool operator==( std::nullptr_t lhs, const shared_ptr<T>& rhs ); |
(8) | (since C++11) |
template< class T > bool operator!=( const shared_ptr<T>& lhs, std::nullptr_t rhs ); |
(9) | (since C++11) |
template< class T > bool operator!=( std::nullptr_t lhs, const shared_ptr<T>& rhs ); |
(10) | (since C++11) |
template< class T > bool operator<( const shared_ptr<T>& lhs, std::nullptr_t rhs ); |
(11) | (since C++11) |
template< class T > bool operator<( std::nullptr_t lhs, const shared_ptr<T>& rhs ); |
(12) | (since C++11) |
template< class T > bool operator>( const shared_ptr<T>& lhs, std::nullptr_t rhs ); |
(13) | (since C++11) |
template< class T > bool operator>( std::nullptr_t lhs, const shared_ptr<T>& rhs ); |
(14) | (since C++11) |
template< class T > bool operator<=( const shared_ptr<T>& lhs, std::nullptr_t rhs ); |
(15) | (since C++11) |
template< class T > bool operator<=( std::nullptr_t lhs, const shared_ptr<T>& rhs ); |
(16) | (since C++11) |
template< class T > bool operator>=( const shared_ptr<T>& lhs, std::nullptr_t rhs ); |
(17) | (since C++11) |
template< class T > bool operator>=( std::nullptr_t lhs, const shared_ptr<T>& rhs ); |
(18) | (since C++11) |
Compares two shared_ptr<T>
objects or compares shared_ptr<T>
with a null pointer.
Note that the comparison operators for shared_ptr
simply compare pointer values; the actual objects pointed to are not compared. Having operator<
defined for shared_ptr
allows shared_ptr
s to be used as keys in associative containers, like std::map and std::set.
Parameters
lhs | - | the left-hand shared_ptr to compare
|
rhs | - | the right-hand shared_ptr to compare
|
Return value
1)
lhs.get() == rhs.get()
2) !(lhs == rhs)
3) std::less<V>()(lhs.get(), rhs.get()), where V is the composite pointer type of std::shared_ptr<T>::element_type* and std::shared_ptr<U>::element_type*
4) rhs < lhs
5) !(rhs < lhs)
6) !(lhs < rhs)
7) !lhs
8) !rhs
9) (bool)lhs
10) (bool)rhs
11) std::less<std::shared_ptr<T>::element_type*>()(lhs.get(), nullptr)
12) std::less<std::shared_ptr<T>::element_type*>()(nullptr, rhs.get())
13) nullptr < lhs
14) rhs < nullptr
15) !(nullptr < lhs)
16) !(rhs < nullptr)
17) !(lhs < nullptr)
18) !(nullptr < rhs)
Exceptions
noexcept specification:
noexcept
Notes
In all cases, it is the stored pointer (the one returned by get()) that is compared, rather than the managed pointer (the one passed to the deleter when use_count goes to zero). The two pointers may differ in a shared_ptr created using the aliasing constructor.
Example
This section is incomplete Reason: no example |
See also
returns the stored pointer (public member function) |