Limitations of `Base.convert` for the construction of parametric types

@mikmoore : no, the result is the same with the alternatives that you suggest.

@Benny : you explanation clarifies some things indeed (and now I understand better how the constructors of parametric types work, thank you!). I would have expected my example to work as desired, since the parameter of my container type is not “useless”, so ParContainer does have a parameter-less constructor:

julia> struct ParContainer{T}
           c::ParType{T}
       end

julia> methods(ParContainer)
# 1 method for type constructor:
 [1] ParContainer(c::ParType{T}) where T
     @ REPL[5]:2

Now, I understand that the problem is that I made an excessively broad interpretation of this statement about convert:

I thought that “assigning to a field of an object” would also apply to the action of default constructors, but I see that this is not the case. The default constructor is like a regular function with respect to this, and convert is not called to match the types of function arguments. It only seems to apply to nonparametric types because they also have default constructors with generic arguments. Right?

And I guess that this won’t change, if as you say: