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