1*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===//
2*0a6a1f1dSLionel Sambuc //
3*0a6a1f1dSLionel Sambuc //                     The LLVM Compiler Infrastructure
4*0a6a1f1dSLionel Sambuc //
5*0a6a1f1dSLionel Sambuc // This file is dual licensed under the MIT and the University of Illinois Open
6*0a6a1f1dSLionel Sambuc // Source Licenses. See LICENSE.TXT for details.
7*0a6a1f1dSLionel Sambuc //
8*0a6a1f1dSLionel Sambuc //===----------------------------------------------------------------------===//
9*0a6a1f1dSLionel Sambuc 
10*0a6a1f1dSLionel Sambuc // <set>
11*0a6a1f1dSLionel Sambuc 
12*0a6a1f1dSLionel Sambuc // class set
13*0a6a1f1dSLionel Sambuc 
14*0a6a1f1dSLionel Sambuc // size_type count(const key_type& k) const;
15*0a6a1f1dSLionel Sambuc 
16*0a6a1f1dSLionel Sambuc #include <set>
17*0a6a1f1dSLionel Sambuc #include <cassert>
18*0a6a1f1dSLionel Sambuc 
19*0a6a1f1dSLionel Sambuc #include "min_allocator.h"
20*0a6a1f1dSLionel Sambuc #include "private_constructor.hpp"
21*0a6a1f1dSLionel Sambuc 
main()22*0a6a1f1dSLionel Sambuc int main()
23*0a6a1f1dSLionel Sambuc {
24*0a6a1f1dSLionel Sambuc     {
25*0a6a1f1dSLionel Sambuc         typedef int V;
26*0a6a1f1dSLionel Sambuc         typedef std::set<int> M;
27*0a6a1f1dSLionel Sambuc         typedef M::size_type R;
28*0a6a1f1dSLionel Sambuc         V ar[] =
29*0a6a1f1dSLionel Sambuc         {
30*0a6a1f1dSLionel Sambuc             5,
31*0a6a1f1dSLionel Sambuc             6,
32*0a6a1f1dSLionel Sambuc             7,
33*0a6a1f1dSLionel Sambuc             8,
34*0a6a1f1dSLionel Sambuc             9,
35*0a6a1f1dSLionel Sambuc             10,
36*0a6a1f1dSLionel Sambuc             11,
37*0a6a1f1dSLionel Sambuc             12
38*0a6a1f1dSLionel Sambuc         };
39*0a6a1f1dSLionel Sambuc         const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
40*0a6a1f1dSLionel Sambuc         R r = m.count(5);
41*0a6a1f1dSLionel Sambuc         assert(r == 1);
42*0a6a1f1dSLionel Sambuc         r = m.count(6);
43*0a6a1f1dSLionel Sambuc         assert(r == 1);
44*0a6a1f1dSLionel Sambuc         r = m.count(7);
45*0a6a1f1dSLionel Sambuc         assert(r == 1);
46*0a6a1f1dSLionel Sambuc         r = m.count(8);
47*0a6a1f1dSLionel Sambuc         assert(r == 1);
48*0a6a1f1dSLionel Sambuc         r = m.count(9);
49*0a6a1f1dSLionel Sambuc         assert(r == 1);
50*0a6a1f1dSLionel Sambuc         r = m.count(10);
51*0a6a1f1dSLionel Sambuc         assert(r == 1);
52*0a6a1f1dSLionel Sambuc         r = m.count(11);
53*0a6a1f1dSLionel Sambuc         assert(r == 1);
54*0a6a1f1dSLionel Sambuc         r = m.count(12);
55*0a6a1f1dSLionel Sambuc         assert(r == 1);
56*0a6a1f1dSLionel Sambuc         r = m.count(4);
57*0a6a1f1dSLionel Sambuc         assert(r == 0);
58*0a6a1f1dSLionel Sambuc     }
59*0a6a1f1dSLionel Sambuc #if __cplusplus >= 201103L
60*0a6a1f1dSLionel Sambuc     {
61*0a6a1f1dSLionel Sambuc         typedef int V;
62*0a6a1f1dSLionel Sambuc         typedef std::set<int, std::less<int>, min_allocator<int>> M;
63*0a6a1f1dSLionel Sambuc         typedef M::size_type R;
64*0a6a1f1dSLionel Sambuc         V ar[] =
65*0a6a1f1dSLionel Sambuc         {
66*0a6a1f1dSLionel Sambuc             5,
67*0a6a1f1dSLionel Sambuc             6,
68*0a6a1f1dSLionel Sambuc             7,
69*0a6a1f1dSLionel Sambuc             8,
70*0a6a1f1dSLionel Sambuc             9,
71*0a6a1f1dSLionel Sambuc             10,
72*0a6a1f1dSLionel Sambuc             11,
73*0a6a1f1dSLionel Sambuc             12
74*0a6a1f1dSLionel Sambuc         };
75*0a6a1f1dSLionel Sambuc         const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
76*0a6a1f1dSLionel Sambuc         R r = m.count(5);
77*0a6a1f1dSLionel Sambuc         assert(r == 1);
78*0a6a1f1dSLionel Sambuc         r = m.count(6);
79*0a6a1f1dSLionel Sambuc         assert(r == 1);
80*0a6a1f1dSLionel Sambuc         r = m.count(7);
81*0a6a1f1dSLionel Sambuc         assert(r == 1);
82*0a6a1f1dSLionel Sambuc         r = m.count(8);
83*0a6a1f1dSLionel Sambuc         assert(r == 1);
84*0a6a1f1dSLionel Sambuc         r = m.count(9);
85*0a6a1f1dSLionel Sambuc         assert(r == 1);
86*0a6a1f1dSLionel Sambuc         r = m.count(10);
87*0a6a1f1dSLionel Sambuc         assert(r == 1);
88*0a6a1f1dSLionel Sambuc         r = m.count(11);
89*0a6a1f1dSLionel Sambuc         assert(r == 1);
90*0a6a1f1dSLionel Sambuc         r = m.count(12);
91*0a6a1f1dSLionel Sambuc         assert(r == 1);
92*0a6a1f1dSLionel Sambuc         r = m.count(4);
93*0a6a1f1dSLionel Sambuc         assert(r == 0);
94*0a6a1f1dSLionel Sambuc     }
95*0a6a1f1dSLionel Sambuc #endif
96*0a6a1f1dSLionel Sambuc #if _LIBCPP_STD_VER > 11
97*0a6a1f1dSLionel Sambuc     {
98*0a6a1f1dSLionel Sambuc         typedef int V;
99*0a6a1f1dSLionel Sambuc         typedef std::set<int, std::less<>> M;
100*0a6a1f1dSLionel Sambuc         typedef M::size_type R;
101*0a6a1f1dSLionel Sambuc         V ar[] =
102*0a6a1f1dSLionel Sambuc         {
103*0a6a1f1dSLionel Sambuc             5,
104*0a6a1f1dSLionel Sambuc             6,
105*0a6a1f1dSLionel Sambuc             7,
106*0a6a1f1dSLionel Sambuc             8,
107*0a6a1f1dSLionel Sambuc             9,
108*0a6a1f1dSLionel Sambuc             10,
109*0a6a1f1dSLionel Sambuc             11,
110*0a6a1f1dSLionel Sambuc             12
111*0a6a1f1dSLionel Sambuc         };
112*0a6a1f1dSLionel Sambuc         const M m(ar, ar+sizeof(ar)/sizeof(ar[0]));
113*0a6a1f1dSLionel Sambuc         R r = m.count(5);
114*0a6a1f1dSLionel Sambuc         assert(r == 1);
115*0a6a1f1dSLionel Sambuc         r = m.count(6);
116*0a6a1f1dSLionel Sambuc         assert(r == 1);
117*0a6a1f1dSLionel Sambuc         r = m.count(7);
118*0a6a1f1dSLionel Sambuc         assert(r == 1);
119*0a6a1f1dSLionel Sambuc         r = m.count(8);
120*0a6a1f1dSLionel Sambuc         assert(r == 1);
121*0a6a1f1dSLionel Sambuc         r = m.count(9);
122*0a6a1f1dSLionel Sambuc         assert(r == 1);
123*0a6a1f1dSLionel Sambuc         r = m.count(10);
124*0a6a1f1dSLionel Sambuc         assert(r == 1);
125*0a6a1f1dSLionel Sambuc         r = m.count(11);
126*0a6a1f1dSLionel Sambuc         assert(r == 1);
127*0a6a1f1dSLionel Sambuc         r = m.count(12);
128*0a6a1f1dSLionel Sambuc         assert(r == 1);
129*0a6a1f1dSLionel Sambuc         r = m.count(4);
130*0a6a1f1dSLionel Sambuc         assert(r == 0);
131*0a6a1f1dSLionel Sambuc     }
132*0a6a1f1dSLionel Sambuc     {
133*0a6a1f1dSLionel Sambuc     typedef PrivateConstructor V;
134*0a6a1f1dSLionel Sambuc     typedef std::set<V, std::less<>> M;
135*0a6a1f1dSLionel Sambuc         typedef M::size_type R;
136*0a6a1f1dSLionel Sambuc 
137*0a6a1f1dSLionel Sambuc     M m;
138*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 5 ));
139*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 6 ));
140*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 7 ));
141*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 8 ));
142*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 9 ));
143*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 10 ));
144*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 11 ));
145*0a6a1f1dSLionel Sambuc     m.insert ( V::make ( 12 ));
146*0a6a1f1dSLionel Sambuc 
147*0a6a1f1dSLionel Sambuc     R r = m.count(5);
148*0a6a1f1dSLionel Sambuc     assert(r == 1);
149*0a6a1f1dSLionel Sambuc     r = m.count(6);
150*0a6a1f1dSLionel Sambuc     assert(r == 1);
151*0a6a1f1dSLionel Sambuc     r = m.count(7);
152*0a6a1f1dSLionel Sambuc     assert(r == 1);
153*0a6a1f1dSLionel Sambuc     r = m.count(8);
154*0a6a1f1dSLionel Sambuc     assert(r == 1);
155*0a6a1f1dSLionel Sambuc     r = m.count(9);
156*0a6a1f1dSLionel Sambuc     assert(r == 1);
157*0a6a1f1dSLionel Sambuc     r = m.count(10);
158*0a6a1f1dSLionel Sambuc     assert(r == 1);
159*0a6a1f1dSLionel Sambuc     r = m.count(11);
160*0a6a1f1dSLionel Sambuc     assert(r == 1);
161*0a6a1f1dSLionel Sambuc     r = m.count(12);
162*0a6a1f1dSLionel Sambuc     assert(r == 1);
163*0a6a1f1dSLionel Sambuc     r = m.count(4);
164*0a6a1f1dSLionel Sambuc     assert(r == 0);
165*0a6a1f1dSLionel Sambuc     }
166*0a6a1f1dSLionel Sambuc #endif
167*0a6a1f1dSLionel Sambuc 
168*0a6a1f1dSLionel Sambuc }
169