lindquist@1: module d; lindquist@73: lindquist@1: void main() lindquist@1: { lindquist@1: int delegate() dg; lindquist@1: lindquist@1: struct S lindquist@1: { lindquist@1: int i; lindquist@1: long l; lindquist@1: float f; lindquist@1: lindquist@1: int func() lindquist@1: { lindquist@1: return 42; lindquist@1: } lindquist@1: } lindquist@1: lindquist@1: S s; lindquist@1: auto dg2 = &s.func; lindquist@73: int i = dg2(); lindquist@73: assert(i == 42); lindquist@1: lindquist@1: i = f(dg2, 1); lindquist@73: assert(i == 43); lindquist@1: } lindquist@1: lindquist@1: int f(int delegate() dg, int i) lindquist@1: { lindquist@1: return dg() + i; lindquist@1: } lindquist@1: lindquist@73: /* lindquist@1: struct S lindquist@1: { lindquist@1: int i; lindquist@1: float f; lindquist@1: int square() lindquist@1: { lindquist@1: return i*i; lindquist@1: } lindquist@1: } lindquist@1: lindquist@1: S s; lindquist@1: lindquist@1: void main() lindquist@1: { lindquist@1: auto dg = &s.square; lindquist@1: } lindquist@73: */