#include <iostream>
#include <functional>
using namespace std;
void functionA(int a)
{
cout << "Thanks for calling me with " << a << endl;
}
template <typename F>
void encapsulateFunction(F f, int val)
{
std::function<void(int)> f_display = f;
// f_display now points to the function encapsulated
f_display(val);
}
int main() {
encapsulateFunction(functionA, 22);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgZnVuY3Rpb25BKGludCBhKQp7Cgljb3V0IDw8ICJUaGFua3MgZm9yIGNhbGxpbmcgbWUgd2l0aCAiIDw8IGEgPDwgZW5kbDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIEY+CnZvaWQgZW5jYXBzdWxhdGVGdW5jdGlvbihGIGYsIGludCB2YWwpCnsKCXN0ZDo6ZnVuY3Rpb248dm9pZChpbnQpPiBmX2Rpc3BsYXkgPSBmOwoJCgkvLyBmX2Rpc3BsYXkgbm93IHBvaW50cyB0byB0aGUgZnVuY3Rpb24gZW5jYXBzdWxhdGVkCglmX2Rpc3BsYXkodmFsKTsKfQoKCgppbnQgbWFpbigpIHsKCQoJZW5jYXBzdWxhdGVGdW5jdGlvbihmdW5jdGlvbkEsIDIyKTsKCQoJcmV0dXJuIDA7Cn0=