#include <iostream>

typedef bool(*DefaultComparator)(int);

bool NumberIsEven(int i)
{
	return i % 2 == 0;
}

template<typename compare = DefaultComparator>
void CheckNumber(int j, compare cmp = nullptr)
{
	if (j > 0 && (cmp ? cmp(j) : true))
		std::cout << "checked" << std::endl;
	else
		std::cout << "failed" << std::endl;
}

int main()
{
	CheckNumber(1);
	CheckNumber(1, NumberIsEven);
	CheckNumber(2);
	CheckNumber(2, NumberIsEven);
}