namespace std { template struct less { bool operator()(const T &lhs, const T &rhs) { return lhs < rhs; } }; template struct greater { bool operator()(const T &lhs, const T &rhs) { return lhs > rhs; } }; struct iterator_type {}; template > struct set { typedef iterator_type iterator; iterator find(const K &k); unsigned count(const K &k); iterator begin(); iterator end(); iterator begin() const; iterator end() const; }; template FwIt find(FwIt, FwIt end, const K &) { return end; } } template void f(const T &t) { std::set s; find(s.begin(), s.end(), 46); }