> For the record: at least for cross(), I prefer the latter version. It always 
> seemed awkward to me to make a symmetric (ok, anti-symmetric in this case) 
> operation like this a member, because vec1.cross(vec2) doesn't look symmetric 
> at all anymore. Furthermore, in the absence of an actual operator for the 
> cross product (which we can't have, unless we resort to overloading abuse), 
> the latter is closer to mathematical notation.
> 
> -- Clemens

I also prefer the second version. 
Don't we like to write max(a, b) and not a.max(b) ?

Ideally I'd like to be able to write operation(x) or operation(x, y) 
indifferently with x and y being a scalar or a small vector type, like in 
shader languages. 

I tried with min/max but failed due to ambiguous overloading:

T min(T)(T a, T b)

vs

vec2!(T) min(T)(vec2!(T) a, vec2!(T) b)

and finally changed names (min, min2, min3...) to overcome this.


D has modules, overload sets, specialization etc... so maybe someone more 
skilled can figure how to sort it out.


Reply via email to