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!