#include <iostream>
////////////////////////////////////////////////////////////////////////////////
// ASSUME EVERYTHING IN THIS SECTION IS PART OF AN API AND IS NOT MY OWN CODE...
// I DO NOT HAVE THE SOURCE AND IT CANNOT BE MODIFIED
typedef void (*CALLBACK)(std::string message);
void call_callback(CALLBACK cb, std::string message) {
cb(message);
}
////////////////////////////////////////////////////////////////////////////////
// Our callback takes a string *and* an integer argument
void callback_function(std::string message, int data)
{
std::cout << message << ' ' << data << '\n';
}
int main()
{
// Using lambdas...
call_callback([/*empty!*/](std::string message)
{
// Call the function as defined in the previous snippet
callback_function(message, 42); // Pass the value directly
}, "Foobar");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLy8gQVNTVU1FIEVWRVJZVEhJTkcgSU4gVEhJUyBTRUNUSU9OIElTIFBBUlQgT0YgQU4gQVBJIEFORCBJUyBOT1QgTVkgT1dOIENPREUuLi4KLy8gSSBETyBOT1QgSEFWRSBUSEUgU09VUkNFIEFORCBJVCBDQU5OT1QgQkUgTU9ESUZJRUQKCnR5cGVkZWYgdm9pZCAoKkNBTExCQUNLKShzdGQ6OnN0cmluZyBtZXNzYWdlKTsKCnZvaWQgY2FsbF9jYWxsYmFjayhDQUxMQkFDSyBjYiwgc3RkOjpzdHJpbmcgbWVzc2FnZSkgewogICAgY2IobWVzc2FnZSk7Cn0KCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgovLyBPdXIgY2FsbGJhY2sgdGFrZXMgYSBzdHJpbmcgKmFuZCogYW4gaW50ZWdlciBhcmd1bWVudAp2b2lkIGNhbGxiYWNrX2Z1bmN0aW9uKHN0ZDo6c3RyaW5nIG1lc3NhZ2UsIGludCBkYXRhKQp7CiAgICBzdGQ6OmNvdXQgPDwgbWVzc2FnZSA8PCAnICcgPDwgZGF0YSA8PCAnXG4nOwp9CgppbnQgbWFpbigpCnsKICAgIC8vIFVzaW5nIGxhbWJkYXMuLi4KICAgIGNhbGxfY2FsbGJhY2soWy8qZW1wdHkhKi9dKHN0ZDo6c3RyaW5nIG1lc3NhZ2UpCiAgICB7CiAgICAgICAgLy8gQ2FsbCB0aGUgZnVuY3Rpb24gYXMgZGVmaW5lZCBpbiB0aGUgcHJldmlvdXMgc25pcHBldAogICAgICAgIGNhbGxiYWNrX2Z1bmN0aW9uKG1lc3NhZ2UsIDQyKTsgIC8vIFBhc3MgdGhlIHZhbHVlIGRpcmVjdGx5CiAgICB9LCAiRm9vYmFyIik7Cn0K