2 template <typename T
> struct less
{
3 bool operator()(const T
&lhs
, const T
&rhs
) { return lhs
< rhs
; }
6 template <typename T
> struct greater
{
7 bool operator()(const T
&lhs
, const T
&rhs
) { return lhs
> rhs
; }
10 struct iterator_type
{};
12 template <typename K
, typename Cmp
= less
<K
>> struct set
{
13 typedef iterator_type iterator
;
14 iterator
find(const K
&k
);
15 unsigned count(const K
&k
);
19 iterator
begin() const;
23 template <typename FwIt
, typename K
>
24 FwIt
find(FwIt
, FwIt end
, const K
&) { return end
; }
27 template <typename T
> void f(const T
&t
) {
29 find(s
.begin(), s
.end(), 46);