/*
* https://stackoverflow.com/questions/9410/how-do-you-pass-a-function-as-a-parameter-in-c
*/
//! How to use function as argument or pass a function as parameter in in C++
#include <bits/stdc++.h>
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
//! Way 01
void Way1(int x, int y, bool (&compare)(int a, int b))
{
(compare(x, y)) ? cout << x << " is bigger than " << y : cout << y << " is bigger than " << x << endl;
}
//! Way 02
void Way2(int a, int b, void (*Way1)(int, int, bool (&func)(int a, int b)))
{
Way1(a, b, compare);
}
//! Way 03
/* Default argument isn't allowed to be passed */
void Way3(int p, int q, function<void(int, int, void (*Way1)(int, int, bool (&func)(int a, int b)))> Way2)
{
Way2(p, q, Way1);
}
int main()
{
Way3(200, 100, Way2);
return 0;
}