#include <iostream>
using namespace std; // haters gonna hate
typedef char * charPtr;
typedef float (*crazyFunction)(float(*)(), float);
float bar()
{
return 3.1415926535;
}
float foo(float(*func)(), float argument)
{
return func() + argument;
}
int main()
{
char * c1, c2, c3;
c1 = NULL;
c2 = 'a';
c3 = c2;
charPtr x1, x2, x3;
x1 = NULL;
x2 = x1;
x3 = x1;
float (*someCrazyFunction)(float(*)(), float) = foo; // WTF is this
crazyFunction myCrazyFunction = foo; // easier to deal with
cout << someCrazyFunction(bar, 1) << " " << myCrazyFunction(bar, 2) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgLy8gaGF0ZXJzIGdvbm5hIGhhdGUKCnR5cGVkZWYgY2hhciAqIGNoYXJQdHI7Cgp0eXBlZGVmIGZsb2F0ICgqY3JhenlGdW5jdGlvbikoZmxvYXQoKikoKSwgZmxvYXQpOwoKZmxvYXQgYmFyKCkKewogICAgcmV0dXJuIDMuMTQxNTkyNjUzNTsKfQoKZmxvYXQgZm9vKGZsb2F0KCpmdW5jKSgpLCBmbG9hdCBhcmd1bWVudCkKewogICAgcmV0dXJuIGZ1bmMoKSArIGFyZ3VtZW50Owp9CgppbnQgbWFpbigpCnsKICAgIGNoYXIgKiBjMSwgYzIsIGMzOwogICAgYzEgPSBOVUxMOwogICAgYzIgPSAnYSc7CiAgICBjMyA9IGMyOwoKICAgIGNoYXJQdHIgeDEsIHgyLCB4MzsKICAgIHgxID0gTlVMTDsKICAgIHgyID0geDE7CiAgICB4MyA9IHgxOwoKICAgIGZsb2F0ICgqc29tZUNyYXp5RnVuY3Rpb24pKGZsb2F0KCopKCksIGZsb2F0KSA9IGZvbzsgLy8gV1RGIGlzIHRoaXMKCiAgICBjcmF6eUZ1bmN0aW9uIG15Q3JhenlGdW5jdGlvbiA9IGZvbzsgLy8gZWFzaWVyIHRvIGRlYWwgd2l0aAoKICAgIGNvdXQgPDwgc29tZUNyYXp5RnVuY3Rpb24oYmFyLCAxKSA8PCAiICIgPDwgbXlDcmF6eUZ1bmN0aW9uKGJhciwgMikgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9