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); // error delegateでは、staticなメソッドを指すことができない
// void function() d2 = &(t.m2); // error functionでは、メソッドを指すことができない
// void delegate() d3 = &m3; // error delegateでは、関数ポインタを指すことができない
void function() d1 = &(Test1.m1); // ok
void delegate() d2 = &(t.m2); // ok
void function() d3 = &m3; // ok
d1();
d2();
d3();
}
aW1wb3J0IHN0ZC5zdGRpbzsKCmNsYXNzIFRlc3QxCnsKcHVibGljOgoJc3RhdGljCgl2b2lkIG0xKCkKCXsKCQl3cml0ZWxuKCJzdGF0aWMgVGVzdDEubTEoKSIpOwoJfQoKCXZvaWQgbTIoKQoJewoJCXdyaXRlbG4oIlRlc3QxLm0yKCkiKTsKCX0KfQoKdm9pZCBtMygpCnsKCXdyaXRlbG4oIm0zKCkiKTsKfQoKdm9pZCBtYWluKCkKewoJYXV0byB0ID0gbmV3IFRlc3QxOwovLwl2b2lkIGRlbGVnYXRlKCkgZDEgPSAmKFRlc3QxLm0xKTsgLy8gZXJyb3IgZGVsZWdhdGXjgafjga/jgIFzdGF0aWPjgarjg6Hjgr3jg4Pjg4njgpLmjIfjgZnjgZPjgajjgYzjgafjgY3jgarjgYQKLy8Jdm9pZCBmdW5jdGlvbigpIGQyID0gJih0Lm0yKTsgICAgIC8vIGVycm9yIGZ1bmN0aW9u44Gn44Gv44CB44Oh44K944OD44OJ44KS5oyH44GZ44GT44Go44GM44Gn44GN44Gq44GECi8vCXZvaWQgZGVsZWdhdGUoKSBkMyA9ICZtMzsgICAgICAgICAvLyBlcnJvciBkZWxlZ2F0ZeOBp+OBr+OAgemWouaVsOODneOCpOODs+OCv+OCkuaMh+OBmeOBk+OBqOOBjOOBp+OBjeOBquOBhAoJdm9pZCBmdW5jdGlvbigpIGQxID0gJihUZXN0MS5tMSk7IC8vIG9rCgl2b2lkIGRlbGVnYXRlKCkgZDIgPSAmKHQubTIpOyAgICAgLy8gb2sKCXZvaWQgZnVuY3Rpb24oKSBkMyA9ICZtMzsgICAgICAgICAvLyBvawoKCWQxKCk7CglkMigpOwoJZDMoKTsKfQo=