#include <iostream>
void voidfunc(void (*func_ptr)(void))
{
func_ptr();
}
void funcwithargs(void (*func_ptr)(int, char, std::string), int a, char b, std::string c)
{
func_ptr(a, b, c);
}
int main()
{
auto vf = []{std::cout<<"Called void func..\n";};
auto vfwa = [](int a, char b, std::string c) {std::cout<<"Called func with args with: "<<a<<b<<" "<<c<<"\n";};
voidfunc(vf);
funcwithargs(vfwa, 10, 'x', " + 3");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCB2b2lkZnVuYyh2b2lkICgqZnVuY19wdHIpKHZvaWQpKQp7CglmdW5jX3B0cigpOwp9Cgp2b2lkIGZ1bmN3aXRoYXJncyh2b2lkICgqZnVuY19wdHIpKGludCwgY2hhciwgc3RkOjpzdHJpbmcpLCBpbnQgYSwgY2hhciBiLCBzdGQ6OnN0cmluZyBjKQp7CglmdW5jX3B0cihhLCBiLCBjKTsKfQoKaW50IG1haW4oKQp7CglhdXRvIHZmID0gW117c3RkOjpjb3V0PDwiQ2FsbGVkIHZvaWQgZnVuYy4uXG4iO307CglhdXRvIHZmd2EgPSBbXShpbnQgYSwgY2hhciBiLCBzdGQ6OnN0cmluZyBjKSB7c3RkOjpjb3V0PDwiQ2FsbGVkIGZ1bmMgd2l0aCBhcmdzIHdpdGg6ICI8PGE8PGI8PCIgIjw8Yzw8IlxuIjt9OwoJCgl2b2lkZnVuYyh2Zik7CglmdW5jd2l0aGFyZ3ModmZ3YSwgMTAsICd4JywgIiArIDMiKTsKCXJldHVybiAwOwp9