Iterator flatten with nested tuples

If you don’t need the product, maybe this is what you can use:

julia> it = ( (i,j) for j in 1:4 for i in 1:3 )
Base.Iterators.Flatten{Base.Generator{UnitRange{Int64}, var"#22#23"}}(Base.Generator{UnitRange{Int64}, var"#22#23"}(var"#22#23"(), 1:4))

julia> collect(it)
12-element Vector{Tuple{Int64, Int64}}:
 (1, 1)
 (2, 1)
 (3, 1)
 (1, 2)
 (2, 2)
 (3, 2)
 (1, 3)
 (2, 3)
 (3, 3)
 (1, 4)
 (2, 4)
 (3, 4)