import std.stdio;
class Test1
{
public:
static
void m1()
{
writeln("static Test1.m1()");
}
void m2()
{
writeln("Test1.m2()");
}
}
void m3()
{
writeln("m3()");
}
void main()
{
auto t = new Test1;
// void delegate() d1 = &(Test1.m1); // ng staticメソッドはdelegateに代入できない
void function() d1 = &(Test1.m1); // ok
// void function() d2 = &(t.m2); // ng classのメソッドはfunctionに代入できない
void delegate() d2 = &(t.m2); // ok
void function() d3 = &m3;
d1();
d2();
d3();
}
aW1wb3J0IHN0ZC5zdGRpbzsKCmNsYXNzIFRlc3QxCnsKcHVibGljOgoJc3RhdGljCgl2b2lkIG0xKCkKCXsKCQl3cml0ZWxuKCJzdGF0aWMgVGVzdDEubTEoKSIpOwoJfQoKCXZvaWQgbTIoKQoJewoJCXdyaXRlbG4oIlRlc3QxLm0yKCkiKTsKCX0KfQoKdm9pZCBtMygpCnsKCXdyaXRlbG4oIm0zKCkiKTsKfQoKdm9pZCBtYWluKCkKewoJYXV0byB0ID0gbmV3IFRlc3QxOwovLwl2b2lkIGRlbGVnYXRlKCkgZDEgPSAmKFRlc3QxLm0xKTsgLy8gbmcgc3RhdGlj44Oh44K944OD44OJ44GvZGVsZWdhdGXjgavku6PlhaXjgafjgY3jgarjgYQKCXZvaWQgZnVuY3Rpb24oKSBkMSA9ICYoVGVzdDEubTEpOyAvLyBvawovLwl2b2lkIGZ1bmN0aW9uKCkgZDIgPSAmKHQubTIpOyAgICAgLy8gbmcgY2xhc3Pjga7jg6Hjgr3jg4Pjg4njga9mdW5jdGlvbuOBq+S7o+WFpeOBp+OBjeOBquOBhAoJdm9pZCBkZWxlZ2F0ZSgpIGQyID0gJih0Lm0yKTsgICAgIC8vIG9rCgl2b2lkIGZ1bmN0aW9uKCkgZDMgPSAmbTM7CgoJZDEoKTsKCWQyKCk7CglkMygpOwp9Cg==