|
@@ -0,0 +1,38 @@
|
|
|
|
|
+#include <ccan/typesafe_cb/typesafe_cb.h>
|
|
|
|
|
+#include <stdlib.h>
|
|
|
|
|
+
|
|
|
|
|
+struct foo {
|
|
|
|
|
+ int x;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+struct bar {
|
|
|
|
|
+ int x;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+struct baz {
|
|
|
|
|
+ int x;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+struct any {
|
|
|
|
|
+ int x;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+static void take_any(struct any *any)
|
|
|
|
|
+{
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+int main(int argc, char *argv[])
|
|
|
|
|
+{
|
|
|
|
|
+ struct foo *foo = NULL;
|
|
|
|
|
+ struct bar *bar = NULL;
|
|
|
|
|
+ struct baz *baz = NULL;
|
|
|
|
|
+ struct other *arg = NULL;
|
|
|
|
|
+
|
|
|
|
|
+ take_any(cast_if_any(struct any *, arg, foo,
|
|
|
|
|
+ struct foo *, struct bar *, struct baz *));
|
|
|
|
|
+ take_any(cast_if_any(struct any *, arg, bar,
|
|
|
|
|
+ struct foo *, struct bar *, struct baz *));
|
|
|
|
|
+ take_any(cast_if_any(struct any *, arg, baz,
|
|
|
|
|
+ struct foo *, struct bar *, struct baz *));
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|