#include <iostream>
using namespace std;
typedef void(*void_func)();
typedef void_func (*func_type) (int);
void_func arbitraryFunction(int a) {
// could be this function, or another with the same signature,
cout << "arbitraryFunction\n";
return nullptr;
}
void_func function(int a) {
// could be this function, or another with the same signature,
return (void_func) arbitraryFunction;
}
int main() {
// your code goes here
func_type f = (func_type) function(0);
f(0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiB2b2lkKCp2b2lkX2Z1bmMpKCk7CnR5cGVkZWYgdm9pZF9mdW5jICgqZnVuY190eXBlKSAoaW50KTsKdm9pZF9mdW5jIGFyYml0cmFyeUZ1bmN0aW9uKGludCBhKSB7CiAgICAvLyBjb3VsZCBiZSB0aGlzIGZ1bmN0aW9uLCBvciBhbm90aGVyIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLCAKICAgIGNvdXQgPDwgImFyYml0cmFyeUZ1bmN0aW9uXG4iOwogICAgcmV0dXJuIG51bGxwdHI7ICAKfQp2b2lkX2Z1bmMgZnVuY3Rpb24oaW50IGEpIHsKICAgIC8vIGNvdWxkIGJlIHRoaXMgZnVuY3Rpb24sIG9yIGFub3RoZXIgd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUsIAogICAgcmV0dXJuICh2b2lkX2Z1bmMpIGFyYml0cmFyeUZ1bmN0aW9uOyAgCn0KaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglmdW5jX3R5cGUgZiA9IChmdW5jX3R5cGUpIGZ1bmN0aW9uKDApOwoJZigwKTsKCXJldHVybiAwOwp9