#include <iostream>

typedef int (*TMyFunctionPointer)(int, int);

int Add(int a, int b)
{
	return a + b;
}

int SomeFunctionThatTakesAFunctionPointer(int (*myFunctionPointer)(int a, int b))
{
	return myFunctionPointer(1, 2);	
}

int TypeDefVersion(TMyFunctionPointer myFunctionPointer)
{
	return myFunctionPointer(1, 2);
}

int main(int argc, const char* argv[]) 
{
	std::cout << SomeFunctionThatTakesAFunctionPointer(Add) << std::endl;
	std::cout << TypeDefVersion(Add) << std::endl;

	return 0;
}