Correct me if I am wrong, but IMHO the comparison of the two functions in 
Mauro's last post is not entirely fair for :: because the parametrized version 
imposed an additional constraint which has nothing to do with :: 

Essentially in the two cases the following types are required:

foo: T <: Real && eltype(a) === T && typeof(b) === T
bar: eltype(a) <: Real && typeof(b) <: Real

The latter is equivalent to

T <: Real && S <: Real && eltype(a) === T && typeof(b) === S,

which requires two /independent/ type parameters, while in foo the types are 
linked by construction. From that perspective I would say that the behavior of 
:: is consistent.

Hope that makes sense,

Alex.

Reply via email to