#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);
}
ICAgICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogICAgI2luY2x1ZGUgPGlvc3RyZWFtPgogICAgCiAgICBzdHJ1Y3QgdGVzdAogICAgewogICAgICAgIHRlc3QoKSA9IGRlZmF1bHQ7CiAgICAgICAgdGVzdChjb25zdCB0ZXN0ICYpCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgImNvcGllZCIgPDwgc3RkOjplbmRsOwogICAgICAgIH0KICAgICAgICB2b2lkIGZ1bmMoaW50IGkpCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgaSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgaW50IG1haW4oKQogICAgewogICAgICAgIHRlc3QgdDsKICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50KT4gZjEgPSBzdGQ6OmJpbmQoJnRlc3Q6OmZ1bmMsIHQsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSk7CiAgICAgICAgZjEoMSk7CiAgICB9Cg==