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...