https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119624

            Bug ID: 119624
           Summary: GCC rejects valid C11 code involving _Generic
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pavel.morozkin at gmail dot com
  Target Milestone: ---

Note: this may be a duplicate.

This valid C11 code:
struct s *x, *y;
int i = _Generic(i ? *x : *y, default: 0);

is rejected by GCC (-std=c11 -pedantic -Wall -Wextra):
<source>:2:22: error: invalid use of undefined type 'struct s'
    2 | int i = _Generic(i ? *x : *y, default: 0);
      |                      ^
<source>:2:27: error: invalid use of undefined type 'struct s'
    2 | int i = _Generic(i ? *x : *y, default: 0);

C11, 6.5.1.1p3:
> The controlling expression of a generic selection is not evaluated.

Keywords / tags: conditional operator, indirection operator, non-modifiable
lvalue, lvalue conversion, non-evaluated expression.

Reply via email to