1 #include <ccan/typesafe_cb/typesafe_cb.h>
2 #include <stdlib.h>
3 
4 struct foo {
5 	int x;
6 };
7 
8 struct bar {
9 	int x;
10 };
11 
12 struct baz {
13 	int x;
14 };
15 
16 struct any {
17 	int x;
18 };
19 
take_any(struct any * any)20 static void take_any(struct any *any)
21 {
22 	(void)any;
23 }
24 
main(void)25 int main(void)
26 {
27 	/* Otherwise we get unused warnings for these. */
28 	struct foo *foo = NULL;
29 	struct bar *bar = NULL;
30 	struct baz *baz = NULL;
31 
32 	take_any(typesafe_cb_cast3(struct any *,
33 				   struct foo *, struct bar *, struct baz *,
34 				   foo));
35 	take_any(typesafe_cb_cast3(struct any *,
36 				   struct foo *, struct bar *, struct baz *,
37 				   bar));
38 	take_any(typesafe_cb_cast3(struct any *,
39 				   struct foo *, struct bar *, struct baz *,
40 				   baz));
41 	return 0;
42 }
43