Listing 11
#include <set> #include <iostream> using std::tr1::shared_ptr; using std::set; using std::cout; int main() { // demonstrate comparison quirk shared_ptr<int> sp0((int*)0); shared_ptr<int> sp1((int*)0); if (sp0 == sp1) cout << "sp0 == sp1\n"; if (sp0 < sp1) cout << "sp0 < sp1\n"; else cout << "!(sp0 < sp1)\n"; if (sp1 < sp0) cout << "sp1 < sp0\n"; else cout << "!(sp1 < sp0)\n"; // search a set set<shared_ptr<int> > my_set; my_set.insert(sp0); if (*my_set.begin() == sp1) cout << "sp1 is in set\n"; else cout << "sp1 is not in set\n"; if (my_set.find(sp1) == my_set.end()) cout << "didn't find sp1 in set\n"; else cout << "found sp1 in set\n"; return 0; }