2013-02-28 8 views

Odpowiedz

24

Mogłeś std::bind drugi argument twojego deltera, zanim podałeś go jako deletera:

auto deleter = std::bind(myDeleter, std::placeholders::_1, 5); 
std::shared_ptr<A> myA(a, deleter); 

Alternatywnie, Twój może być Deleter funktor że bierze int przez jej konstruktora:

struct myDeleter 
{ 
    myDeleter(int); 
    void operator()(A*); 
}; 

myDeleter deleter(5); 
std::shared_ptr<A> myA(a, deleter); 

Alternatywnie można użyć wyrażenia lambda:

std::shared_ptr<A> myA(a, [](A* a){ myDeleter(a, 5); }); 
+1

Brill. Wielkie dzięki! dlaczego lambdy zostały wprowadzone dopiero niedawno w C++ ?! – alexandreC

Powiązane problemy