É possível invocar um método com todas as combinações possíveis de K (com repetição) de argumentos passados em uma tupla?

O comportamento desejado pode ser ilustrado da seguinte maneira:

void foo(int x, int y) {
    std::cout << x << " " << y << std::endl;
}

int main() {
    all_combinations<2>(foo, std::make_tuple(1, 2)); // K = 2 
    // to run: 
    // foo(1, 1)
    // foo(1, 2)
    // foo(2, 1)
    // foo(2, 2)
}

questionAnswers(1)

yourAnswerToTheQuestion