#include <iostream>
#include <string>
void printer(void * userp)
{
std::string * string = reinterpret_cast<std::string*>(userp);
std::cout << *string << std::endl;
}
int main()
{
//Cast the function to a one that takes a void pointer
void(*func)(void*) = &printer;
//Create a string and call the function with it
std::string string = "Hello World";
func(&string);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCBwcmludGVyKHZvaWQgKiB1c2VycCkKewoJc3RkOjpzdHJpbmcgKiBzdHJpbmcgPSByZWludGVycHJldF9jYXN0PHN0ZDo6c3RyaW5nKj4odXNlcnApOwogICAgc3RkOjpjb3V0IDw8ICpzdHJpbmcgPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpIAp7CiAgICAvL0Nhc3QgdGhlIGZ1bmN0aW9uIHRvIGEgb25lIHRoYXQgdGFrZXMgYSB2b2lkIHBvaW50ZXIKICAgIHZvaWQoKmZ1bmMpKHZvaWQqKSA9ICZwcmludGVyOwogICAgLy9DcmVhdGUgYSBzdHJpbmcgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uIHdpdGggaXQKICAgIHN0ZDo6c3RyaW5nIHN0cmluZyA9ICJIZWxsbyBXb3JsZCI7CiAgICBmdW5jKCZzdHJpbmcpOwogICAgcmV0dXJuIDA7Cn0=