[int, int, int] f(); [int, [int, int], int] g(); int main() { ([int, double])f(); // (1) ([int, [int], int])g(); // (2) printf("%d %d\n", ([void, [int, int]])g()); // (3) -- should work and doesn't -- tries to construct void object, but should ignore that component in terms of the type of the tuple // ([int, int, int, int])g(); // (4) -- should not work and doesn't // ([int, [int, int, int]])g(); // (5) -- should not work and doesn't }