Thanks, those are very useful links.
@nogc Vector opUnary(string op)() pure const nothrow
if (op == "+" || op == "-" || op == "~" || op == "!")
{
Vector res = void;
mixin(generateLoopCode!("res.v[@] = " ~ op ~ " v[@];", N)());
return res;
}
wow...