Boost logo

Boost Users :

Subject: Re: [Boost-users] [shared_ptr] boost::shared_ptr deleter question
From: Tamas.Ruszkai_at_[hidden]
Date: 2015-08-14 10:00:47

Hi Glen,

You are right, my example was not complete.

Finally I have figured the problem out: I had also a weak_ptr somewhere to
the owned class and it did not let the deleter to be removed.

It means:
- Owned class is removed when there is no more strong refrence exist.
- Deleter is destroyed when neither strong nor weak references exist

The reason is: the deleter is stored by value in the reference counter
I guess, theoretically the deleter would be not necessary any more after
the owned object is destroyed, but storing it in the reference counter was
maybe simpler to implement (maybe more efficient as well).

Thanks and sorry for the noise.


From: Glen Fernandes <glen.fernandes_at_[hidden]>
To: boost-users_at_[hidden],
Date: 14.08.2015 15:50
Subject: Re: [Boost-users] [shared_ptr] boost::shared_ptr deleter
Sent by: "Boost-users" <boost-users-bounces_at_[hidden]>


I find it very surprising that your breakpoint in the destructor is not
being hit at all. This:
    #include <boost/smart_ptr/shared_ptr.hpp>
    #include <iostream>
    struct D {
        ~D() {
            std::cout << "~D\n";
        template<class U>
        void operator()(U*) {
            std::cout << "operator()\n";
    struct T { };
    int main()
            auto p = boost::shared_ptr<T>(new T, D{});
            std::cout << "...\n";



View this message in context:
Sent from the Boost - Users mailing list archive at
Boost-users mailing list

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at