#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;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BUkdTPgpzdGQ6OmZ1bmN0aW9uPHZvaWQoQVJHUy4uLik+IHdyYXBwZXIoc3RkOjpmdW5jdGlvbjx2b2lkKEFSR1MuLi4pPiBmKXsKICAgIHJldHVybiBbZl0oQVJHUy4uLiBhcmcpewogICAgICAgIGYoYXJnLi4uKTsKICAgIH07Cn0KCgppbnQgbWFpbigpCnsJCglzdGQ6OmZ1bmN0aW9uIDx2b2lkKGludCxpbnQsY2hhcik+IGYgPSBbXShpbnQgYSAsaW50IGIgLGNoYXIgYyApIC0+IHZvaWQgeyBzdGQ6OmNvdXQgPDwgIjExMSI7IH07CglhdXRvIHQgPSB3cmFwcGVyKGYpOwoJdCgxLDIsMyk7CglyZXR1cm4gMDsKfQ==