You can’t re-order type parameters.
You can’t do this because Foo{X} is an abstract type Foo{X,T}:
julia> Foo{Bar}
Foo{Bar,T} where T<:Real
So Foo{Int} will fail because your Foo type requires the first type parameter to be a subtype of AbstractBar.