#include <iostream>
       #include <memory>
 
 
        void SomeFunc()
        {
            auto r1_cleanup = [](int* ptr){
                std::cout << "r1_cleanup is called" << std::endl;
            };
 
            auto r2_cleanup = [](int* ptr){
                std::cout << "r2_cleanup is called" << std::endl;
            };
 
            auto r3_cleanup = [](int* ptr){
                std::cout << "r3_cleanup is called" << std::endl;
            };
 
        auto lv = std::unique_ptr<int, decltype(r1_cleanup)>(new int()/*::init1(...)*/, r1_cleanup);
        auto cv1 = std::unique_ptr<int, decltype(r2_cleanup)>(new int()/*::init2(...)*/, r2_cleanup);
        auto cv2 = std::unique_ptr<int, decltype(r3_cleanup)>(new int()/*::init3(...)*/, r3_cleanup);
 
    /*...*/
        }
 
        int main() {
            SomeFunc();
            return 0;
        }
				ICAgICAgICAjaW5jbHVkZSA8aW9zdHJlYW0+CiAgICAgICAjaW5jbHVkZSA8bWVtb3J5PgogICAgIAogICAgIAogICAgICAgIHZvaWQgU29tZUZ1bmMoKQogICAgICAgIHsKICAgICAgICAgICAgYXV0byByMV9jbGVhbnVwID0gW10oaW50KiBwdHIpewogICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJyMV9jbGVhbnVwIGlzIGNhbGxlZCIgPDwgc3RkOjplbmRsOwogICAgICAgICAgICB9OwogICAgIAogICAgICAgICAgICBhdXRvIHIyX2NsZWFudXAgPSBbXShpbnQqIHB0cil7CiAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgInIyX2NsZWFudXAgaXMgY2FsbGVkIiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIAogICAgICAgICAgICBhdXRvIHIzX2NsZWFudXAgPSBbXShpbnQqIHB0cil7CiAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgInIzX2NsZWFudXAgaXMgY2FsbGVkIiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgIH07CiAgICAgCiAgICAgICAgYXV0byBsdiA9IHN0ZDo6dW5pcXVlX3B0cjxpbnQsIGRlY2x0eXBlKHIxX2NsZWFudXApPihuZXcgaW50KCkvKjo6aW5pdDEoLi4uKSovLCByMV9jbGVhbnVwKTsKICAgICAgICBhdXRvIGN2MSA9IHN0ZDo6dW5pcXVlX3B0cjxpbnQsIGRlY2x0eXBlKHIyX2NsZWFudXApPihuZXcgaW50KCkvKjo6aW5pdDIoLi4uKSovLCByMl9jbGVhbnVwKTsKICAgICAgICBhdXRvIGN2MiA9IHN0ZDo6dW5pcXVlX3B0cjxpbnQsIGRlY2x0eXBlKHIzX2NsZWFudXApPihuZXcgaW50KCkvKjo6aW5pdDMoLi4uKSovLCByM19jbGVhbnVwKTsKICAgICAKICAgIC8qLi4uKi8KICAgICAgICB9CiAgICAgCiAgICAgICAgaW50IG1haW4oKSB7CiAgICAgICAgICAgIFNvbWVGdW5jKCk7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0=