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

    struct MyClass
    {
        int x;
        MyClass(int x_) : x(x_) { }
        void some_func()
        {
            std::cout << x << std::endl;
        }
    };

    int main(int argc, char *argv[])
    {
        std::shared_ptr<MyClass> pmc;
        auto mfp = std::bind(&MyClass::some_func, std::ref(pmc));

        pmc = std::make_shared<MyClass>(42);
        mfp();

        pmc = std::make_shared<MyClass>(1729);
        mfp();
    }
