1delegate string Foo (); 2 3string foo (void* data) { 4 return "foo"; 5} 6 7void bar (int first, ...) { 8 assert (first == 23); 9 var args = va_list (); 10 Foo** out_func = args.arg (); 11 *out_func = (Foo*) foo; 12} 13 14void baz (int first, ...) { 15 assert (first == 42); 16 var args = va_list (); 17 Foo func = args.arg (); 18 assert (func () == "foo"); 19} 20 21void main () { 22 { 23 Foo func; 24 bar (23, out func); 25 assert (func () == "foo"); 26 } 27 { 28 baz (42, foo); 29 } 30} 31