#include <iostream>
#include <algorithm>
#include <functional>

int main()
{
	bool foo = true;
	auto predicate = foo ? std::function<bool(int,int)>(std::greater<int>()) : std::function<bool(int,int)>(std::greater_equal<int>());
	auto b = std::bind2nd(predicate, 2);
	std::cout << b(4) << std::endl; // true, 4 > 2
}
