I have a parametrized struct (Vector!(T, dim)) that takes two parameters 
(Type and a number). And made some Alias with defaults parameters.

In other struct (Matrix!(T, dim)), that uses these struct to represent a 
matrix in column-major order. I have a internall alias for Vector using 
internally (alias Vector!(T,dim_) VCol;) . The problem that I have it's 
when I try to use opIndexAssign to assign to a column a Vector. I try 
this :

void opIndexAssign(Vector v, size_t j) {
        if ( code that see if VCol if same type that v ) {
                col[j] = v;
        } else {
                col[j] = cast (VCol) v;
        }
}

But not compile... I get this error :
Error: struct zmath.vector.Vector(T,ulong dim_) if (__traits
(isFloating,T)) is used as a type
Error: template instance zmath.matrix.Matrix!(float,2) error instantiating

So finally I try this :
/**
* Assigns a new column vector
*/
void opIndexAssign(VCol v, size_t j) {
        col[j] = v;
}

But now I must do cast outside, even knowing that are same type. Plus now 
I must keep VCol alias public.

How should fix this, or What is the correct way of doing this ?


Note : I have a opCast for Vector that cast between Vectors with 
different parameters and it's checked that works.

Second Question : I'm thinking publish this small Vector/Quaternion/
Matrix lib that I made learning D2.. where I should put and how ? (and I 
use Git)

-- 
Yep, I'm afraid that I have a blog : zardoz.es

Reply via email to