// SetComp.cpp
// compile with: /EHsc
//
// Illustrates how to use the key_comp function to obtain a
// function pointer that is the stored function object that
// determines the order of elements in the controlled sequence.
// It also illustrates how to use the value_comp function to
// obtain a function pointer that is the stored function object
// that determines the order of the elements in the controlled
// sequence (same as key_comp result).
//
// Functions:
//
// key_comp Returns a function pointer to the function that
// determines the order of elements in the controlled
// sequence.
// value_comp Returns a function pointer to the function that
// determines the order of elements in the controlled
// sequence (same as key_comp).
//////////////////////////////////////////////////////////////////////
#pragma warning(disable:4786)
#include <set>
#include <iostream>
using namespace std ;
typedef set<int> SET_INT;
void truefalse(int x)
{
cout << (x?"True":"False") << endl;
}
int main() {
SET_INT s1;
cout << "s1.key_comp()(8,10) returned ";
truefalse(s1.key_comp()(8,10)); // True
cout << "s1.value_comp()(8,10) returned ";
truefalse(s1.value_comp()(8,10)); // True
cout << "s1.key_comp()(10,8) returned ";
truefalse(s1.key_comp()(10,8)); // False
cout << "s1.value_comp()(10,8) returned ";
truefalse(s1.value_comp()(10,8)); // False
cout << "s1.key_comp()(8,8) returned ";
truefalse(s1.key_comp()(8,8)); // False
cout << "s1.value_comp()(8,8) returned ";
truefalse(s1.value_comp()(8,8)); // False
}