#include #include #include //for greater, binder2nd, and bind2nd using namespace std; template void f(const PREDICATE& predicate) { if (predicate(100.0)) { cout << "100.0 passes the test.\n"; } else { cout << "100.0 fails the test.\n"; } } int main() { greater g; if (g(100.0, 98.6)) { //if (g.operator()(100.0, 98.6)) { cout << "You have a fever.\n"; } else { cout << "Your temperature is normal.\n"; } binder2nd > fever(g, 98.6); if (fever(100.0)) { //if (fever.operator()(100.0)) { cout << "You have a fever.\n"; } else { cout << "Your temperature is normal.\n"; } f(fever); f(binder2nd >(g, 98.6)); f(bind2nd(g, 98.6)); f(bind2nd(greater(), 98.6)); return EXIT_SUCCESS; }