Not sure why you want this, but one approach is to dispatch on all subtypes of your type. For correctness, you may need to keep in mind that Union{}
subtypes all types.
function (::Type{Q})(v, u) where {Q <: Quantity}
# constructor code here
end
Also keep in mind there’s currently no generic way to access a bound (either lower or upper) of a type variable, see: