operator< <memory>
shared_ptr and weak_ptr less than comparison.
template<class Ty1, class Ty2>
bool operator<(const shared_ptr<Ty1>& left, const shared_ptr<Ty2>& right);
template<class Ty1, class Ty2>
bool operator<(const weak_ptr<Ty1>& left, const weak_ptr<Ty2>& right);
Parameters
Ty1
The type controlled by the left shared pointer.Ty2
The type controlled by the right shared pointer.left
The left shared pointer.right
The right shared pointer.
Remarks
The template functions impose a strict weak ordering on objects of their respective types. The actual ordering is implementation-specific, except that !(left < right) && !(right < left) is true only when left and right own or point to the same resource. The ordering imposed by these functions enables the use of shared_ptr Class and weak_ptr Class objects as keys in associative containers.
Example
// std_tr1__memory__operator_lt.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
int main()
{
std::shared_ptr<int> sp0(new int(0));
std::shared_ptr<int> sp1(new int(0));
std::cout << "sp0 < sp0 == " << std::boolalpha
<< (sp0 < sp0) << std::endl;
std::cout << "sp0 < sp1 == " << std::boolalpha
<< (sp0 < sp1) << std::endl;
std::cout << "sp1 < sp0 == " << std::boolalpha
<< (sp1 < sp0) << std::endl;
std::cout << std::endl;
std::weak_ptr<int> wp0(sp0);
std::weak_ptr<int> wp1(sp1);
std::cout << "wp0 < wp0 == " << std::boolalpha
<< (wp0 < wp0) << std::endl;
std::cout << "wp0 < wp1 == " << std::boolalpha
<< (wp0 < wp1) << std::endl;
std::cout << "wp1 < wp0 == " << std::boolalpha
<< (wp1 < wp0) << std::endl;
return (0);
}
sp0 < sp0 == false sp0 < sp1 == true sp1 < sp0 == false wp0 < wp0 == false wp0 < wp1 == true wp1 < wp0 == false
Requirements
Header: <memory>
Namespace: std