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