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