#include <functional>
#include <iostream>

template <typename ...ARGS>
std::function<void(ARGS...)> wrapper(std::function<void(ARGS...)> f){
    return [f](ARGS... arg){
        f(arg...);
    };
}


int main()
{	
	std::function <void(int,int,char)> f = [](int a ,int b ,char c ) -> void { std::cout << "111"; };
	auto t = wrapper(f);
	t(1,2,3);
	return 0;
}