#include <utility>
#include <vector>
template <class Function, std::size_t... indexes>
void call(std::vector<int> &v, Function &&function) {
function(v[indexes]...);
}
void f(int, int, int){}
int main() {
std::vector<int> v{1, 2, 3};
call<decltype(f), std::make_index_sequence<3>>(v, f);
}
I2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDx2ZWN0b3I+Cgp0ZW1wbGF0ZSA8Y2xhc3MgRnVuY3Rpb24sIHN0ZDo6c2l6ZV90Li4uIGluZGV4ZXM+CnZvaWQgY2FsbChzdGQ6OnZlY3RvcjxpbnQ+ICZ2LCBGdW5jdGlvbiAmJmZ1bmN0aW9uKSB7CiAgICBmdW5jdGlvbih2W2luZGV4ZXNdLi4uKTsKfQoKdm9pZCBmKGludCwgaW50LCBpbnQpe30KCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8aW50PiB2ezEsIDIsIDN9OwoJY2FsbDxkZWNsdHlwZShmKSwgc3RkOjptYWtlX2luZGV4X3NlcXVlbmNlPDM+Pih2LCBmKTsKfQ==
prog.cpp: In function ‘int main()’:
prog.cpp:13:53: error: no matching function for call to ‘call(std::vector<int>&, void (&)(int, int, int))’
call<decltype(f), std::make_index_sequence<3>>(v, f);
^
prog.cpp:5:6: note: candidate: template<class Function, long unsigned int ...indexes> void call(std::vector<int>&, Function&&)
void call(std::vector<int> &v, Function &&function) {
^~~~
prog.cpp:5:6: note: template argument deduction/substitution failed: