    #include <functional>
    #include <iostream>
    
    struct test
    {
        test() = default;
        test(const test &)
        {
            std::cout << "copied" << std::endl;
        }
        void func(int i)
        {
            std::cout << i << std::endl;
        }
    };
    
    int main()
    {
        test t;
        std::function<void(int)> f1 = std::bind(&test::func, t, std::placeholders::_1);
        f1(1);
    }
