/auto cross(T, U)(const Vec!(T,3) a, const U[3] b) { / return cross(a, Vec!(U,3)(b)); /} /auto cross(T, U)(const T[3] a, const Vec!(U,3) b) { / return cross(Vec!(T,3)(a), b); /} /auto cross(T, U)(const T[3] a, const U[3] b) { / return cross(Vec!(T,3)(a), Vec!(U,3)(b)); /} /auto dot(T, U, size_t size)(const Vec!(T,size) a, const Usize b) if (size==2||size==3) { / return dot(a,Vec!(U,size)(b)); /} /auto dot(T, U, size_t size)(const Tsize a, const Vec!(U,size) b) if (size==2||size==3) { / return dot(Vec!(T,size)(a),b); /} /auto dot(T, U, size_t size)(const Tsize a, const Usize b) if (size==2||size==3) { / return dot(Vec!(T,size)(a),Vec!(U,size)(b)); /}
See Implementation
/auto cross(T, U)(const Vec!(T,3) a, const U[3] b) { / return cross(a, Vec!(U,3)(b)); /} /auto cross(T, U)(const T[3] a, const Vec!(U,3) b) { / return cross(Vec!(T,3)(a), b); /} /auto cross(T, U)(const T[3] a, const U[3] b) { / return cross(Vec!(T,3)(a), Vec!(U,3)(b)); /} /auto dot(T, U, size_t size)(const Vec!(T,size) a, const Usize b) if (size==2||size==3) { / return dot(a,Vec!(U,size)(b)); /} /auto dot(T, U, size_t size)(const Tsize a, const Vec!(U,size) b) if (size==2||size==3) { / return dot(Vec!(T,size)(a),b); /} /auto dot(T, U, size_t size)(const Tsize a, const Usize b) if (size==2||size==3) { / return dot(Vec!(T,size)(a),Vec!(U,size)(b)); /}