Try this example here:
julia> abstract type S{T <: Number} end
julia> struct Foo{T <: Number} <: S{T}
x::T
end
julia> i = S{Int}[]
0-element Array{S{Int64},1}
julia> push!(i, Foo(10))
1-element Array{S{Int64},1}:
Foo{Int64}(10)
Try this example here:
julia> abstract type S{T <: Number} end
julia> struct Foo{T <: Number} <: S{T}
x::T
end
julia> i = S{Int}[]
0-element Array{S{Int64},1}
julia> push!(i, Foo(10))
1-element Array{S{Int64},1}:
Foo{Int64}(10)