#include #include struct L1 { L1(){std::cout << "create L1: " << this << "\n";} ~L1(){std::cout << "delete L1: " << this <<" \n";} }; struct L2 { L2(){std::cout << "create L2 \n";} ~L2(){std::cout << "delete L2 \n";} }; struct L3 { L3(){std::cout << "create L3 \n";} ~L3(){std::cout << "delete L3 \n";} }; int main() { Loki::SetLongevity (new L1, 1); Loki::SetLongevity (new L1, 1, Loki::Private::Deleter::Delete); Loki::SetLongevity::Type> (new L1, 1, Loki::Private::Deleter::Delete); Loki::SetLongevity(new L2, 2); Loki::SetLongevity(new L1, 1); Loki::SetLongevity(new L3, 3); Loki::SetLongevity(new L1, 1); std::cout << "\n"; }