#include <iostream>
#include <functional>
#include <memory>
#include <vector>
using namespace std;
template<typename R>
R f(bool x)
{
return x ? R() : R();
}
template<typename R>
struct X
{
X(const function<R()>& xfn) : fn(xfn) {}
R get(bool f)
{
return f ? fn() : R();
}
function<R()> fn;
};
int intf() { return 0; }
void voidf() {}
void delme(int*) {
cout<<"delme"<<endl;
}
int main() {
int k = 0;
vector<shared_ptr<int>> v;
v.emplace_back(new int(1));
v.emplace_back(&k, &delme);
cout<<"============="<<endl;
shared_ptr<int> p = v.back();
v.pop_back();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFI+ClIgZihib29sIHgpCnsKCXJldHVybiB4ID8gUigpIDogUigpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBSPgpzdHJ1Y3QgWAp7CglYKGNvbnN0IGZ1bmN0aW9uPFIoKT4mIHhmbikgOiBmbih4Zm4pIHt9CglSIGdldChib29sIGYpCgl7CgkJcmV0dXJuIGYgPyBmbigpIDogUigpOwoJfQoJZnVuY3Rpb248UigpPiBmbjsKfTsKCmludCBpbnRmKCkgeyByZXR1cm4gMDsgfQp2b2lkIHZvaWRmKCkge30KCnZvaWQgZGVsbWUoaW50KikgewoJY291dDw8ImRlbG1lIjw8ZW5kbDsKfQoKaW50IG1haW4oKSB7CglpbnQgayA9IDA7Cgl2ZWN0b3I8c2hhcmVkX3B0cjxpbnQ+PiB2OwoJdi5lbXBsYWNlX2JhY2sobmV3IGludCgxKSk7Cgl2LmVtcGxhY2VfYmFjaygmaywgJmRlbG1lKTsKCQoJY291dDw8Ij09PT09PT09PT09PT0iPDxlbmRsOwoJCglzaGFyZWRfcHRyPGludD4gcCA9IHYuYmFjaygpOwoJdi5wb3BfYmFjaygpOwoJcmV0dXJuIDA7Cn0=