There is no proper way to do this. But note that your suggestion below is not any more performant than just not typing the field. You could check in the constructor whether the type can be iterated on:
immutable Test{T} a::T function Test(a) @assert eltype(a)<:Integer tmp = [aa in a] # better make sure the compiler does not remove this no-op new(a) end end On Tue, 2016-11-08 at 16:49, Kevin Kunzmann <nl.vekm...@gmail.com> wrote: > Hi, > > say I want to define a custom type with a field that accepts any kind of > iterable integer type as valid input (both 1:3 as well as collect(1:3)), > how would I do that in the most generic way? I know that I can use > > type test{T<:integer} > a::Union{Range{T},Vector{T}} > end > > But there might be other iterable integer types that I did not think of > during implementation - how can I make the code even more generic? > > Best, > > Kevin