getting: "error: initializer element is not a compile-time constant" Even when struct is inside function (original) (raw)

int foo(int *a, int b) { return 0; }

int main() { int x; (struct { typeof(foo(&(struct { int t; }){.t = x}.t, 0)) t; }){0}; }

the above code compiles with gcc and tcc. but fails with clang.

The error I get is:

err_test.c:10:48: error: initializer element is not a compile-time constant
          typeof(foo(&(struct { int t; }){.t = x}.t, 0)) t;
                                               ^
1 error generated.

This error seems to be for global or static variables, but for some reason is triggering even though the variable is defined inside a function and inside a typeof