Function Objects Can be called like a function Class overloads operator() Generator: 0 args Unary Function: 1 arg Unary Predicate: 1 arg, return bool Binary Function: 2 args Binary Predicate: 2 args, return bool Strict Weak Ordering: eg. less than