mercredi 27 mai 2020

function pointer to overloaded static member - to use as custom deleter in unique_ptr

I have a class with static and overloaded member function. I want to use one them as a custom deleter in a unique_ptr there are lots of questions on this topic, none of them worked for me.

#include <iostream>
#include <memory>
#include <functional>

class A {
    public:
    static void release() {
        std::cout << "void released\n";
    }
    static void release(int*i) {
        std::cout << *i << " released\n";
    }
};

int main()
{
    int i = 10;
    std::unique_ptr<int, decltype(&A::release(int*))> ptr(&i, &A::release); // compiler error
    std::unique_ptr<int, std::function<void(int*)>> ptr(&i, &A::release); // compiler error
    return 0;
}

try it out here: https://onlinegdb.com/H14txk3sL

Aucun commentaire:

Enregistrer un commentaire