Well I've done some benchmarks and with all optimization flags Andrei's solution is faster, at least on DMD. But from what I can tell DMD doesn't inline `retro()` calls.