Personally, I would have the policy implemented: permutations( Policy p = Policy.forward )() { ... } And maybe extend it with aliases: alias fPermutations permutations!( Policy.forward ); alias rPermutations permutations!( Policy.backward ); alias biPermutations permutations!( Policy.bidirectional ); Cheers!