I tried to write a function that would call back with every permutation of size n:
template<typename F>
void permutationsCallback(int n, F f) {
if (n == 1) {
f(std::vector<int>{0});
}
else {
permutationsCallback(n - 1, [n, &f](std::vector<int> p) {
p.emplace_back(n - 1);
f(p);
while (--p.back() >= 0) {
for (int k = 0; k < n - 1; k++) {
p[k] += p[k] == p.back();
}
f(p);
}
});
}
}
(For example I want permutationsCallback(3, f) to call f({0,1,2}, f({0,2,1}), f({1,2,0}), f({1,0,2}), f({2,0,1}), f({2,1,0}).)
but on compilation with MCSV I get error
fatal error C1202: recursive type or function dependency context too complex
How can I fix this?