14: return pp ? *pp : origin;
^ Cannot determine type rank for 'Structured-type field_names=['x', 'y']'
The C standard lists all possible combinations for the 2nd and 3rd operands types:
if one is struct/union type, the other shall be the same (our case)
it one is void, the other shall be void
if one is a pointer to a type T, the other may be of the same pointer type, or void * or 0/NULL
if one is an arithmetic type, the other shall be an arithmetic type, and the usual arithmetic conversions apply (integer promotion, etc.) to find the common type
Compilation and execution are OK.
Same function, written differently:
It fails to compile:
The C standard lists all possible combinations for the 2nd and 3rd operands types: