Variadic templates with aliases
    comco 
    void.unsigned at gmail.com
       
    Thu Dec 27 12:01:54 PST 2012
    
    
  
I wrote a simple template mixin to hold common operator overloads:
mixin template VectorSpaceOpsMixin(Vector, Scalar, alias a, alias 
b)
{
     Vector opUnary(string op)() if (op == "-") {
         return Vector(-a, -b);
     }
     ...
}
This works like this:
struct complex {
     double a, b;
     mixin VectorSpaceOpsMixin!(complex, double, a, b);
     ...
}
Now this is nice, but it only works when the vector has 2 parts. 
Can the mixin template be made more general? What will then be 
its definition? This don't work:
mixin template `VectorSpaceOpsMixin(Vector, Scalar, alias... 
parts) { ... }`
Obviously, this kind of functionality is easy with string mixins. 
Can it be achieved without them?
    
    
More information about the Digitalmars-d-learn
mailing list