blob: d3fe873233e5388913c2af5acf95b13afe9435ee (
plain) (
blame)
| 1
2
3
4
5
6
7
8
9
10
11
12
 | #pragma once
// calls TCallback for all args permutations including (id, id)
template <class TCallback, class... TArgs>
void Permutate(TCallback&& fn, TArgs&&... args)
{
    auto forAll = [&](auto& arg){
        (fn(std::forward<decltype(arg)>(arg), std::forward<decltype(args)>(args)), ...);
    };
    (forAll(std::forward<decltype(args)>(args)), ...);
}
 |