C++ Memory Library - owner_less


Advertisements

Description

It defines function objects that perform an owner-based comparison between shared_ptr and/or weak_ptr objects.

Declaration

Following is the declaration for std::owner_less.

template <class Ptr> struct owner_less;
template <class T> struct owner_less<shared_ptr<T>>;
template <class T> struct owner_less<weak_ptr<T>>;

C++11

template <class Ptr> struct owner_less;
template <class T> struct owner_less<shared_ptr<T>>;
template <class T> struct owner_less<weak_ptr<T>>;

Parameters

Ptr − Its a managed pointer.

Return Value

none

Exceptions

noexcep − It doesn't throw any exceptions.

Example

In below example explains about std::owner_less.

#include <iostream>
#include <memory>
#include <set>

int main () {
   int * p = new int (10);

   std::shared_ptr<int> a (new int (20));
   std::shared_ptr<int> b (a,p);
  
   std::set < std::shared_ptr<int> > value_based;
   std::set < std::shared_ptr<int>, std::owner_less<std::shared_ptr<int>> > owner_based;

   value_based.insert (a);
   value_based.insert (b);

   owner_based.insert (a);
   owner_based.insert (b);

   std::cout << "value_based.size() is " << value_based.size() << '\n';
   std::cout << "owner_based.size() is " << owner_based.size() << '\n';

   delete p;
   return 0;
}

Let us compile and run the above program, this will produce the following result −

value_based.size() is 2
owner_based.size() is 1
memory.htm
Advertisements