# NTuple{T} means NTuple{N,T} for any appropriate Ns
union{T}(x::NTuple{T}, y::NTuple{T})::Vector{T}
# instead of (pretending N3 is allowed)
union{T}(x::NTuple{T}, y::NTuple{T})::NTuple{T}
@tomlee is correct: you shouldn’t really be treating tuples as a general container like this. It’s handy to do some computations with them, but in general they belong more to the type domain than the value domain. If there is in principle, no way to predict how many values you have – as is the case for unions – then you should definitely not be using tuples.