#include <iostream>
#include <memory>
#include <functional>
class Object {
std::function<void(int)> m_fTodo;
public:
template < typename Unary >
Object( Unary const & unary )
: m_fTodo( unary )
{}
void TodoinClass() {
m_fTodo( 10 );
}
};
class Scene
{
std::shared_ptr<Object> m_pObj;
public:
Scene()
: m_pObj( new Object(std::bind(&Scene::Todo, this, std::placeholders::_1)) )
{
m_pObj->TodoinClass();
}
void Todo(int A) {
std::cout << "this: " << this << std::endl;;
std::cout << "void Todo(" << A << ")" << std::endl;
}
};
int main() {
Scene scene;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCmNsYXNzIE9iamVjdCB7CiAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50KT4gbV9mVG9kbzsKcHVibGljOgogICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBVbmFyeSA+CiAgICBPYmplY3QoIFVuYXJ5IGNvbnN0ICYgdW5hcnkgKSAKICAgIDogbV9mVG9kbyggdW5hcnkgKQogICAge30KICAgIAogICAgdm9pZCBUb2RvaW5DbGFzcygpIHsKICAgICAgICBtX2ZUb2RvKCAxMCApOwogICAgfQp9OwoKY2xhc3MgU2NlbmUKewogICAgc3RkOjpzaGFyZWRfcHRyPE9iamVjdD4gbV9wT2JqOyAgIApwdWJsaWM6ICAgIAogICAgU2NlbmUoKSAKICAgIDogbV9wT2JqKCBuZXcgT2JqZWN0KHN0ZDo6YmluZCgmU2NlbmU6OlRvZG8sIHRoaXMsIHN0ZDo6cGxhY2Vob2xkZXJzOjpfMSkpICkKICAgIHsgCiAgICAgICAgbV9wT2JqLT5Ub2RvaW5DbGFzcygpOwogICAgfQoKICAgIHZvaWQgVG9kbyhpbnQgQSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAidGhpczogIiA8PCB0aGlzIDw8IHN0ZDo6ZW5kbDs7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJ2b2lkIFRvZG8oIiA8PCBBIDw8ICIpIiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKCiAgICBTY2VuZSBzY2VuZTsKICAgIAp9