]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch01.html
update
[l4.git] / l4 / pkg / libstdc++-v3 / contrib / libstdc++-v3-4.3.3 / doc / html / manual / bk01pt01ch01.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><meta name="keywords" content="&#10;      ISO C++&#10;    , &#10;      library&#10;    " /><link rel="start" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="intro.html" title="Part I. Introduction" /><link rel="prev" href="intro.html" title="Part I. Introduction" /><link rel="next" href="bk01pt01ch01s02.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt01ch01s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt01ch01.html#manual.intro.status.standard">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.1998">C++ 1998</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01.html#manual.intro.status.standard.200x">C++ 200x</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s02.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s02.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt01ch01s03.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bk01pt01ch01s03.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.standard"></a>Implementation Status</h2></div></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.1998"></a>C++ 1998</h3></div></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998"></a>Checklist</h4></div></div></div><div class="literallayout"><p><br />
4    Completion Checklist for the Standard C++ Library<br />
5    Updated: 2003-04-25<br />
6 <br />
7    Status Code Legend:<br />
8     M - Missing<br />
9     S - Present as stub.<br />
10     X - Partially implemented, or buggy.<br />
11     T - Implemented, pending test/inspection.<br />
12     V - Verified to pass all available test suites.<br />
13     Q - Qualified by inspection for non-testable correctness.<br />
14     P - Portability verified.<br />
15     C - Certified.<br />
16 <br />
17    Lexical notes:<br />
18    Only status codes appear in column 0.  Notes relating to conformance<br />
19    issues appear [in brackets].<br />
20 <br />
21    Note that this checklist does not (yet) include all emendations<br />
22    recommended by the ISO Library Working Group:<br />
23    http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html<br />
24 <br />
25    Detailed explanation of status codes:<br />
26 <br />
27     M - Missing:  The name is not visible to programs that include<br />
28         the specified header, either at compile or link stage.<br />
29 <br />
30     S - Present as stub:  A program can use the name, but no implementation<br />
31         is provided.  Programs that use the name link correctly, but<br />
32         cannot usefully be run.<br />
33 <br />
34     X - Partially implemented, or buggy:  Some implementation has been<br />
35         provided, but it is known or believed not to conform fully.<br />
36         It may have an incorrect base class, wrong namespace, wrong<br />
37         storage class, or simply not fully implement requirements.<br />
38         However, it may be sufficiently usable to help test other<br />
39         components.<br />
40 <br />
41     T - Implemented, pending test/inspection:  Implementation believed<br />
42         to be complete, and informal testing suggests it is ready for<br />
43         formal verification.<br />
44 <br />
45     V - Verified, passes all test suites:  Verified to satisfy all<br />
46         generically testable conformance requirements.<br />
47 <br />
48     Q - Qualified by inspection for non-testable correctness:<br />
49         Inspected, "implementation-defined" documentation accepted,<br />
50         local usability criteria satisfied, formally inspected for<br />
51         other untestable conformance.  (Untestable requirements<br />
52         include exception-safety, thread-safety, worst-case<br />
53         complexity, memory cleanliness, usefulness.)<br />
54 <br />
55     P - Portability verified:  Qualified on all primary target platforms.<br />
56 <br />
57     C - Certified:  Formally certified to have passed all tests,<br />
58         inspections, qualifications; approved under "signing authority"<br />
59         to be used to satisfy contractual guarantees.<br />
60 <br />
61    ----------------------------------------------------------------------<br />
62        &lt;algorithm&gt;    &lt;iomanip&gt;    &lt;list&gt;      &lt;ostream&gt;     &lt;streambuf&gt;<br />
63        &lt;bitset&gt;       &lt;ios&gt;        &lt;locale&gt;    &lt;queue&gt;       &lt;string&gt;<br />
64        &lt;complex&gt;      &lt;iosfwd&gt;     &lt;map&gt;       &lt;set&gt;         &lt;typeinfo&gt;<br />
65 X      &lt;deque&gt;        &lt;iostream&gt;   &lt;memory&gt;    &lt;sstream&gt;     &lt;utility&gt;<br />
66        &lt;exception&gt;    &lt;istream&gt;    &lt;new&gt;       &lt;stack&gt;       &lt;valarray&gt;<br />
67        &lt;fstream&gt;      &lt;iterator&gt;   &lt;numeric&gt;   &lt;stdexcept&gt;   &lt;vector&gt;<br />
68        &lt;functional&gt;   &lt;limits&gt;<br />
69 <br />
70    [C header names must be in std:: to qualify.  Related to shadow/ dir.]<br />
71            &lt;cassert&gt; &lt;ciso646&gt; &lt;csetjmp&gt; &lt;cstdio&gt;  &lt;ctime&gt;<br />
72            &lt;cctype&gt;  &lt;climits&gt; &lt;csignal&gt; &lt;cstdlib&gt; &lt;cwchar&gt;<br />
73 X          &lt;cerrno&gt;  &lt;clocale&gt; &lt;cstdarg&gt; &lt;cstring&gt; &lt;cwctype&gt;<br />
74            &lt;cfloat&gt;  &lt;cmath&gt;   &lt;cstddef&gt;<br />
75 <br />
76     Macro:<br />
77 X   errno,  declared  or  defined in &lt;cerrno&gt;.<br />
78 <br />
79     Macro fn:<br />
80 X   setjmp(jmp_buf), declared or defined in &lt;csetjmp&gt;<br />
81 X   va_end(va_list), declared or defined in &lt;cstdarg&gt;<br />
82 <br />
83     Types:<br />
84 X   clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t,<br />
85 X   ptrdiff_t, sig_atomic_t, size_t,  time_t,  tm,  va_list,<br />
86 X   wctrans_t, wctype_t, and wint_t.<br />
87 <br />
88    1 Which  of  the functions in the C++ Standard Library are not reentrant<br />
89     subroutines is implementation-defined.<br />
90 <br />
91    18.1  Types                                        [lib.support.types]<br />
92 X      &lt;cstddef&gt;<br />
93 X      NULL<br />
94 X      offsetof<br />
95 X      ptrdiff_t<br />
96 X      size_t<br />
97 <br />
98    18.2  Implementation properties                   [lib.support.limits]<br />
99 <br />
100     &lt;limits&gt;, &lt;climits&gt;, and &lt;cfloat&gt;<br />
101 <br />
102    18.2.1  Numeric limits                                    [lib.limits]<br />
103 <br />
104 X   template&lt;class T&gt; class numeric_limits;<br />
105 <br />
106 T   enum float_round_style;<br />
107 T   enum float_denorm_style;<br />
108 <br />
109 T   template&lt;&gt; class numeric_limits&lt;bool&gt;;<br />
110 <br />
111 T   template&lt;&gt; class numeric_limits&lt;char&gt;;<br />
112 T   template&lt;&gt; class numeric_limits&lt;signed char&gt;;<br />
113 T   template&lt;&gt; class numeric_limits&lt;unsigned char&gt;;<br />
114 T   template&lt;&gt; class numeric_limits&lt;wchar_t&gt;;<br />
115 <br />
116 T   template&lt;&gt; class numeric_limits&lt;short&gt;;<br />
117 T   template&lt;&gt; class numeric_limits&lt;int&gt;;<br />
118 T   template&lt;&gt; class numeric_limits&lt;long&gt;;<br />
119 T   template&lt;&gt; class numeric_limits&lt;unsigned short&gt;;<br />
120 T   template&lt;&gt; class numeric_limits&lt;unsigned int&gt;;<br />
121 T   template&lt;&gt; class numeric_limits&lt;unsigned long&gt;;<br />
122 <br />
123 X   template&lt;&gt; class numeric_limits&lt;float&gt;;<br />
124 X   template&lt;&gt; class numeric_limits&lt;double&gt;;<br />
125 X   template&lt;&gt; class numeric_limits&lt;long double&gt;;<br />
126 <br />
127    18.2.1.1  Template class numeric_limits           [lib.numeric.limits]<br />
128 T   template&lt;class T&gt; class numeric_limits {<br />
129     public:<br />
130 T     static const bool is_specialized = false;<br />
131 T     static T min() throw();<br />
132 T     static T max() throw();<br />
133 T     static const int  digits = 0;<br />
134 T     static const int  digits10 = 0;<br />
135 T     static const bool is_signed = false;<br />
136 T     static const bool is_integer = false;<br />
137 T     static const bool is_exact = false;<br />
138 T     static const int  radix = 0;<br />
139 T     static T epsilon() throw();<br />
140 T     static T round_error() throw();<br />
141 <br />
142 T     static const int  min_exponent = 0;<br />
143 T     static const int  min_exponent10 = 0;<br />
144 T     static const int  max_exponent = 0;<br />
145 T     static const int  max_exponent10 = 0;<br />
146 <br />
147 T     static const bool has_infinity = false;<br />
148 T     static const bool has_quiet_NaN = false;<br />
149 T     static const bool has_signaling_NaN = false;<br />
150 T     static const float_denorm_style has_denorm = denorm_absent;<br />
151 T     static const bool has_denorm_loss = false;<br />
152 T     static T infinity() throw();<br />
153 T     static T quiet_NaN() throw();<br />
154 T     static T signaling_NaN() throw();<br />
155 T     static T denorm_min() throw();<br />
156 <br />
157 T     static const bool is_iec559 = false;<br />
158 T     static const bool is_bounded = false;<br />
159 T     static const bool is_modulo = false;<br />
160 <br />
161 T     static const bool traps = false;<br />
162 T     static const bool tinyness_before = false;<br />
163 T     static const float_round_style round_style = round_toward_zero;<br />
164     };<br />
165 <br />
166    18.2.1.3  Type float_round_style                     [lib.round.style]<br />
167 <br />
168 T   enum float_round_style {<br />
169 T     round_indeterminate       = -1,<br />
170 T     round_toward_zero         =  0,<br />
171 T     round_to_nearest          =  1,<br />
172 T     round_toward_infinity     =  2,<br />
173 T     round_toward_neg_infinity =  3<br />
174     };<br />
175 <br />
176    18.2.1.4  Type float_denorm_style                   [lib.denorm.style]<br />
177 <br />
178 T   enum float_denorm_style {<br />
179 T     denorm_indeterminate = -1;<br />
180 T     denorm_absent = 0;<br />
181 T     denorm present = 1;<br />
182     };<br />
183 <br />
184    18.2.1.5  numeric_limits specializations         [lib.numeric.special]<br />
185    <br />
186    [Note: see Note at 18.2.1.  ]<br />
187 <br />
188    18.2.2  C Library                                       [lib.c.limits]<br />
189 <br />
190    1 Header &lt;climits&gt; (Table 3):<br />
191       CHAR_BIT   INT_MAX    LONG_MIN     SCHAR_MIN   UCHAR_MAX   USHRT_MAX<br />
192 X     CHAR_MAX   INT_MIN    MB_LEN_MAX   SHRT_MAX    UINT_MAX<br />
193       CHAR_MIN   LONG_MAX   SCHAR_MAX    SHRT_MIN    ULONG_MAX<br />
194 <br />
195    3 Header &lt;cfloat&gt; (Table 4):<br />
196 <br />
197     DBL_DIG          DBL_MIN_EXP      FLT_MIN_10_EXP   LDBL_MAX_10_EXP<br />
198     DBL_EPSILON      FLT_DIG          FLT_MIN_EXP      LDBL_MAX_EXP<br />
199     DBL_MANT_DIG     FLT_EPSILON      FLT_RADIX        LDBL_MIN<br />
200 X   DBL_MAX          FLT_MANT_DIG     FLT_ROUNDS       LDBL_MIN_10_EXP<br />
201     DBL_MAX_10_EXP   FLT_MAX          LDBL_DIG         LDBL_MIN_EXP<br />
202     DBL_MAX_EXP      FLT_MAX_10_EXP   LDBL_EPSILON<br />
203     DBL_MIN          FLT_MAX_EXP      LDBL_MANT_DIG<br />
204     DBL_MIN_10_EXP   FLT_MIN          LDBL_MAX<br />
205 <br />
206 <br />
207         1 Header &lt;cstdlib&gt; (partial), Table 5:<br />
208 X             EXIT_FAILURE     EXIT_SUCCESS<br />
209               abort   atexit   exit<br />
210 <br />
211 S    abort(void)<br />
212 S    extern "C" int atexit(void (*f)(void))<br />
213 S    extern "C++" int atexit(void (*f)(void))<br />
214 S    exit(int status)<br />
215 <br />
216    18.4  Dynamic memory management                  [lib.support.dynamic]<br />
217 <br />
218    Header &lt;new&gt; synopsis<br />
219 <br />
220 T    class bad_alloc;<br />
221 T    struct nothrow_t {};<br />
222 T    extern const nothrow_t nothrow;<br />
223 T    typedef void (*new_handler)();<br />
224 T    new_handler set_new_handler(new_handler new_p) throw();<br />
225 <br />
226 T    void* operator new(std::size_t size) throw(std::bad_alloc);<br />
227 T    void* operator new(std::size_t size, const std::nothrow_t&amp;) throw();<br />
228 T    void  operator delete(void* ptr) throw();<br />
229 T    void  operator delete(void* ptr, const std::nothrow_t&amp;) throw();<br />
230 T    void* operator new[](std::size_t size) throw(std::bad_alloc);<br />
231 T    void* operator new[](std::size_t size, const std::nothrow_t&amp;) throw();<br />
232 T    void  operator delete[](void* ptr) throw();<br />
233 T    void  operator delete[](void* ptr, const std::nothrow_t&amp;) throw();<br />
234 T    void* operator new  (std::size_t size, void* ptr) throw();<br />
235 T    void* operator new[](std::size_t size, void* ptr) throw();<br />
236 T    void  operator delete  (void* ptr, void*) throw();<br />
237 T    void  operator delete[](void* ptr, void*) throw();<br />
238 <br />
239    18.4.2.1  Class bad_alloc                              [lib.bad.alloc]<br />
240 <br />
241 T   class bad_alloc : public exception {<br />
242     public:<br />
243 T     bad_alloc() throw();<br />
244 T     bad_alloc(const bad_alloc&amp;) throw();<br />
245 T     bad_alloc&amp; operator=(const bad_alloc&amp;) throw();<br />
246 T     virtual ~bad_alloc() throw();<br />
247 T     virtual const char* what() const throw();<br />
248 <br />
249 <br />
250 <br />
251 T  new_handler set_new_handler(new_handler new_p) throw();<br />
252 <br />
253 <br />
254      Header &lt;typeinfo&gt; synopsis<br />
255 <br />
256 T    class type_info;<br />
257 T    class bad_cast;<br />
258 T    class bad_typeid;<br />
259 <br />
260    18.5.1 - Class type_info [lib.type.info]<br />
261 <br />
262 T    class type_info {<br />
263     public:<br />
264 T      virtual ~type_info();<br />
265 T      bool operator==(const type_info&amp; rhs) const;<br />
266 T      bool operator!=(const type_info&amp; rhs) const;<br />
267 T      bool before(const type_info&amp; rhs) const;<br />
268 T      const char* name() const;<br />
269     private:<br />
270 T      type_info(const type_info&amp; rhs);<br />
271 T      type_info&amp; operator=(const type_info&amp; rhs);<br />
272     };<br />
273 <br />
274    18.5.2 - Class bad_cast [lib.bad.cast]<br />
275 <br />
276 T  bad_cast() throw();<br />
277 T  virtual const char* bad_cast::what() const throw();<br />
278 <br />
279    18.5.3  Class bad_typeid                              [lib.bad.typeid]<br />
280 <br />
281 T    class bad_typeid : public exception {<br />
282     public:<br />
283 T      bad_typeid() throw();<br />
284 T      bad_typeid(const bad_typeid&amp;) throw();<br />
285 T      bad_typeid&amp; operator=(const bad_typeid&amp;) throw();<br />
286 T      virtual ~bad_typeid() throw();<br />
287 T      virtual const char* what() const throw();<br />
288     };<br />
289 <br />
290    18.6  Exception handling                       [lib.support.exception]<br />
291 <br />
292 T      Header &lt;exception&gt; synopsis<br />
293 <br />
294 T    class exception;<br />
295 T    class bad_exception;<br />
296 <br />
297 T    typedef void (*unexpected_handler)();<br />
298 T    unexpected_handler set_unexpected(unexpected_handler f) throw();<br />
299 T    void unexpected();<br />
300 T    typedef void (*terminate_handler)();<br />
301 T    terminate_handler set_terminate(terminate_handler f) throw();<br />
302 T    void terminate();<br />
303 T    bool uncaught_exception();<br />
304 <br />
305    18.6.1  Class exception                                [lib.exception]<br />
306 <br />
307 T    class exception {<br />
308      public:<br />
309 T      exception() throw();<br />
310 T      exception(const exception&amp;) throw();<br />
311 T      exception&amp; operator=(const exception&amp;) throw();<br />
312 T      virtual ~exception() throw();<br />
313 T      virtual const char* what() const throw();<br />
314     };<br />
315 <br />
316    18.6.2.1  Class bad_exception                      [lib.bad.exception]<br />
317 T    class bad_exception : public exception {<br />
318     public:<br />
319 T      bad_exception() throw();<br />
320 T      bad_exception(const bad_exception&amp;) throw();<br />
321 T      bad_exception&amp; operator=(const bad_exception&amp;) throw();<br />
322 T      virtual ~bad_exception() throw();<br />
323 T      virtual const char* what() const throw();<br />
324     };<br />
325 <br />
326    18.7  Other runtime support                      [lib.support.runtime]<br />
327 <br />
328    1 Headers &lt;cstdarg&gt; (variable arguments),  &lt;csetjmp&gt;  (nonlocal  jumps),<br />
329     &lt;ctime&gt;  (system  clock clock(), time()), &lt;csignal&gt; (signal handling),<br />
330     and &lt;cstdlib&gt; (runtime environment getenv(), system()).<br />
331 <br />
332                     Table 6--Header &lt;cstdarg&gt; synopsis<br />
333                  Macros:   va_arg    va_end   va_start<br />
334 X                Type:     va_list<br />
335 <br />
336                     Table 7--Header &lt;csetjmp&gt; synopsis<br />
337 <br />
338                           Macro:      setjmp |<br />
339 X                         Type:       jmp_buf<br />
340                           Function:   longjmp<br />
341 <br />
342                      Table 8--Header &lt;ctime&gt; synopsis<br />
343 <br />
344                       Macros:      CLOCKS_PER_SEC<br />
345 X                     Types:       clock_t<br />
346                       Functions:   clock<br />
347 <br />
348                     Table 9--Header &lt;csignal&gt; synopsis<br />
349 <br />
350 X        Macros:      SIGABRT        SIGILL   SIGSEGV   SIG_DFL<br />
351          SIG_IGN      SIGFPE         SIGINT   SIGTERM   SIG_ERR<br />
352          Type:        sig_atomic_t<br />
353          Functions:   raise          signal<br />
354 <br />
355                    Table 10--Header &lt;cstdlib&gt; synopsis<br />
356 <br />
357 X                     Functions:   getenv   system<br />
358 <br />
359    19.1  Exception classes                           [lib.std.exceptions]<br />
360 <br />
361    Header &lt;stdexcept&gt; synopsis<br />
362 <br />
363 T     class logic_error;<br />
364 T     class domain_error;<br />
365 T     class invalid_argument;<br />
366 T     class length_error;<br />
367 T     class out_of_range;<br />
368 T     class runtime_error;<br />
369 T     class range_error;<br />
370 T     class overflow_error;<br />
371 T     class underflow_error;<br />
372 <br />
373    19.1.1  Class logic_error                            [lib.logic.error]<br />
374 T   class logic_error : public exception {<br />
375     public:<br />
376 T     explicit logic_error(const string&amp; what_arg);<br />
377     };<br />
378 <br />
379    19.1.2  Class domain_error                          [lib.domain.error]<br />
380 <br />
381 T   class domain_error : public logic_error {<br />
382     public:<br />
383 T     explicit domain_error(const string&amp; what_arg);<br />
384     };<br />
385 <br />
386    19.1.3  Class invalid_argument                  [lib.invalid.argument]<br />
387 <br />
388 T   class invalid_argument : public logic_error {<br />
389     public:<br />
390 T     explicit invalid_argument(const string&amp; what_arg);<br />
391     };<br />
392 <br />
393    19.1.4  Class length_error                          [lib.length.error]<br />
394 <br />
395 T   class length_error : public logic_error {<br />
396     public:<br />
397 T     explicit length_error(const string&amp; what_arg);<br />
398     };<br />
399 <br />
400    19.1.5  Class out_of_range                          [lib.out.of.range]<br />
401 <br />
402 T   class out_of_range : public logic_error {<br />
403     public:<br />
404 T     explicit out_of_range(const string&amp; what_arg);<br />
405     };<br />
406 <br />
407 <br />
408    19.1.6  Class runtime_error                        [lib.runtime.error]<br />
409 <br />
410 T   class runtime_error : public exception {<br />
411     public:<br />
412 T     explicit runtime_error(const string&amp; what_arg);<br />
413     };<br />
414 <br />
415 <br />
416    19.1.7  Class range_error                            [lib.range.error]<br />
417 <br />
418 T   class range_error : public runtime_error {<br />
419     public:<br />
420 T     explicit range_error(const string&amp; what_arg);<br />
421     };<br />
422 <br />
423    19.1.8  Class overflow_error                      [lib.overflow.error]<br />
424 <br />
425 T   class overflow_error : public runtime_error {<br />
426     public:<br />
427 T     explicit overflow_error(const string&amp; what_arg);<br />
428     };<br />
429 <br />
430 <br />
431    19.1.9  Class underflow_error                    [lib.underflow.error]<br />
432 <br />
433 T   class underflow_error : public runtime_error {<br />
434     public:<br />
435 T     explicit underflow_error(const string&amp; what_arg);<br />
436     };<br />
437 <br />
438 <br />
439    19.2  Assertions                                      [lib.assertions]<br />
440 <br />
441                     Table 2--Header &lt;cassert&gt; synopsis<br />
442 <br />
443 X                         Macro:   assert<br />
444 <br />
445    19.3  Error numbers                                        [lib.errno]<br />
446 <br />
447                     Table 3--Header &lt;cerrno&gt; synopsis<br />
448 <br />
449 X                    |Macros:   EDOM   ERANGE   errno |<br />
450 <br />
451 <br />
452    20.2  Utility components                                 [lib.utility]<br />
453 <br />
454    Header &lt;utility&gt; synopsis<br />
455 <br />
456     // _lib.operators_, operators:<br />
457 T    namespace rel_ops {<br />
458 T      template&lt;class T&gt; bool operator!=(const T&amp;, const T&amp;);<br />
459 T      template&lt;class T&gt; bool operator&gt; (const T&amp;, const T&amp;);<br />
460 T      template&lt;class T&gt; bool operator&lt;=(const T&amp;, const T&amp;);<br />
461 T      template&lt;class T&gt; bool operator&gt;=(const T&amp;, const T&amp;);<br />
462     }<br />
463     // _lib.pairs_, pairs:<br />
464 T   template &lt;class T1, class T2&gt; struct pair;<br />
465 T   template &lt;class T1, class T2&gt;<br />
466       bool operator==(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
467 T   template &lt;class T1, class T2&gt;<br />
468       bool operator&lt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
469 T   template &lt;class T1, class T2&gt;<br />
470       bool operator!=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
471 T   template &lt;class T1, class T2&gt;<br />
472       bool operator&gt; (const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
473 T   template &lt;class T1, class T2&gt;<br />
474       bool operator&gt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
475 T   template &lt;class T1, class T2&gt;<br />
476       bool operator&lt;=(const pair&lt;T1,T2&gt;&amp;, const pair&lt;T1,T2&gt;&amp;);<br />
477 T   template &lt;class T1, class T2&gt; pair&lt;T1,T2&gt; make_pair(const T1&amp;, const T2&amp;);<br />
478 <br />
479 <br />
480    20.2.2  Pairs                                              [lib.pairs]<br />
481 <br />
482 T  template &lt;class T1, class T2&gt;<br />
483    struct pair {<br />
484 T    typedef T1 first_type;<br />
485 T    typedef T2 second_type;<br />
486 <br />
487 T    T1 first;<br />
488 T    T2 second;<br />
489 T    pair();<br />
490 T    pair(const T1&amp; x, const T2&amp; y);<br />
491 T    template&lt;class U, class V&gt; pair(const pair&lt;U, V&gt; &amp;p);<br />
492    };<br />
493 <br />
494    20.3  Function objects                          [lib.function.objects]<br />
495 <br />
496    Header &lt;functional&gt; synopsis<br />
497 <br />
498     // _lib.base_, base:<br />
499 V   template &lt;class Arg, class Result&gt; struct unary_function;<br />
500 V   template &lt;class Arg1, class Arg2, class Result&gt; struct binary_function;<br />
501 <br />
502     // _lib.arithmetic.operations_, arithmetic operations:<br />
503 V   template &lt;class T&gt; struct plus;<br />
504 V   template &lt;class T&gt; struct minus;<br />
505 V   template &lt;class T&gt; struct multiplies;<br />
506 V   template &lt;class T&gt; struct divides;<br />
507 V   template &lt;class T&gt; struct modulus;<br />
508 V   template &lt;class T&gt; struct negate;<br />
509     // _lib.comparisons_, comparisons:<br />
510 V   template &lt;class T&gt; struct equal_to;<br />
511 V   template &lt;class T&gt; struct not_equal_to;<br />
512 V   template &lt;class T&gt; struct greater;<br />
513 V   template &lt;class T&gt; struct less;<br />
514 V   template &lt;class T&gt; struct greater_equal;<br />
515 V   template &lt;class T&gt; struct less_equal;<br />
516     // _lib.logical.operations_, logical operations:<br />
517 V   template &lt;class T&gt; struct logical_and;<br />
518 V   template &lt;class T&gt; struct logical_or;<br />
519 V   template &lt;class T&gt; struct logical_not;<br />
520     // _lib.negators_, negators:<br />
521     template &lt;class Predicate&gt; struct unary_negate;<br />
522 V   template &lt;class Predicate&gt;<br />
523       unary_negate&lt;Predicate&gt;  not1(const Predicate&amp;);<br />
524 V   template &lt;class Predicate&gt; struct binary_negate;<br />
525 V   template &lt;class Predicate&gt;<br />
526       binary_negate&lt;Predicate&gt; not2(const Predicate&amp;);<br />
527     // _lib.binders_, binders:<br />
528 V   template &lt;class Operation&gt;  class binder1st;<br />
529 V   template &lt;class Operation, class T&gt;<br />
530       binder1st&lt;Operation&gt; bind1st(const Operation&amp;, const T&amp;);<br />
531 V   template &lt;class Operation&gt; class binder2nd;<br />
532 V   template &lt;class Operation, class T&gt;<br />
533       binder2nd&lt;Operation&gt; bind2nd(const Operation&amp;, const T&amp;);<br />
534     // _lib.function.pointer.adaptors_, adaptors:<br />
535 V   template &lt;class Arg, class Result&gt; class pointer_to_unary_function;<br />
536 V   template &lt;class Arg, class Result&gt;<br />
537       pointer_to_unary_function&lt;Arg,Result&gt; ptr_fun(Result (*)(Arg));<br />
538 V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
539       class pointer_to_binary_function;<br />
540 V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
541       pointer_to_binary_function&lt;Arg1,Arg2,Result&gt;<br />
542         ptr_fun(Result (*)(Arg1,Arg2));<br />
543 <br />
544     // _lib.member.pointer.adaptors_, adaptors:<br />
545 V   template&lt;class S, class T&gt; class mem_fun_t;<br />
546 V   template&lt;class S, class T, class A&gt; class mem_fun1_t;<br />
547 V   template&lt;class S, class T&gt;<br />
548         mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)());<br />
549 V   template&lt;class S, class T, class A&gt;<br />
550         mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A));<br />
551 V   template&lt;class S, class T&gt; class mem_fun_ref_t;<br />
552 V   template&lt;class S, class T, class A&gt; class mem_fun1_ref_t;<br />
553 V   template&lt;class S, class T&gt;<br />
554         mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)());<br />
555 V   template&lt;class S, class T, class A&gt;<br />
556         mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A));<br />
557 <br />
558 V   template &lt;class S, class T&gt; class const_mem_fun_t;<br />
559 V   template &lt;class S, class T, class A&gt; class const_mem_fun1_t;<br />
560 V   template &lt;class S, class T&gt;<br />
561       const_mem_fun_t&lt;S,T&gt; mem_fun(S (T::*f)() const);<br />
562 V   template &lt;class S, class T, class A&gt;<br />
563       const_mem_fun1_t&lt;S,T,A&gt; mem_fun(S (T::*f)(A) const);<br />
564 V   template &lt;class S, class T&gt; class const_mem_fun_ref_t;<br />
565 V   template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t;<br />
566 V   template &lt;class S, class T&gt;<br />
567       const_mem_fun_ref_t&lt;S,T&gt; mem_fun_ref(S (T::*f)() const);<br />
568 V   template &lt;class S, class T, class A&gt;<br />
569       const_mem_fun1_ref_t&lt;S,T,A&gt; mem_fun_ref(S (T::*f)(A) const);<br />
570    }<br />
571 <br />
572    20.3.1  Base                                                [lib.base]<br />
573 <br />
574 V   template &lt;class Arg, class Result&gt;<br />
575     struct unary_function {<br />
576 V     typedef Arg    argument_type;<br />
577 V     typedef Result result_type;<br />
578     };<br />
579 V   template &lt;class Arg1, class Arg2, class Result&gt;<br />
580     struct binary_function {<br />
581 V     typedef Arg1   first_argument_type;<br />
582 V     typedef Arg2   second_argument_type;<br />
583 V     typedef Result result_type;<br />
584     };<br />
585 <br />
586    20.3.2  Arithmetic operations              [lib.arithmetic.operations]<br />
587 <br />
588 T  template &lt;class T&gt; struct plus : binary_function&lt;T,T,T&gt; {<br />
589 V   T operator()(const T&amp; x, const T&amp; y) const;<br />
590    };<br />
591 <br />
592 T  template &lt;class T&gt; struct minus : binary_function&lt;T,T,T&gt; {<br />
593 V   T operator()(const T&amp; x, const T&amp; y) const;<br />
594    };<br />
595 <br />
596 T  template &lt;class T&gt; struct multiplies : binary_function&lt;T,T,T&gt; {<br />
597 V   T operator()(const T&amp; x, const T&amp; y) const;<br />
598    };<br />
599 <br />
600 T  template &lt;class T&gt; struct divides : binary_function&lt;T,T,T&gt; {<br />
601 V   T operator()(const T&amp; x, const T&amp; y) const;<br />
602    };<br />
603 <br />
604 T  template &lt;class T&gt; struct modulus : binary_function&lt;T,T,T&gt; {<br />
605 V   T operator()(const T&amp; x, const T&amp; y) const;<br />
606    };<br />
607 <br />
608 T  template &lt;class T&gt; struct negate : unary_function&lt;T,T&gt; {<br />
609 V   T operator()(const T&amp; x) const;<br />
610    };<br />
611 <br />
612    20.3.3  Comparisons                                  [lib.comparisons]<br />
613 <br />
614 T  template &lt;class T&gt; struct equal_to : binary_function&lt;T,T,bool&gt; {<br />
615 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
616    };<br />
617 <br />
618 T  template &lt;class T&gt; struct not_equal_to : binary_function&lt;T,T,bool&gt; {<br />
619 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
620    };<br />
621 <br />
622 T  template &lt;class T&gt; struct greater : binary_function&lt;T,T,bool&gt; {<br />
623 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
624    };<br />
625 <br />
626 T  template &lt;class T&gt; struct less : binary_function&lt;T,T,bool&gt; {<br />
627 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
628    };<br />
629 <br />
630 T  template &lt;class T&gt; struct greater_equal : binary_function&lt;T,T,bool&gt; {<br />
631 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
632    };<br />
633 <br />
634 T  template &lt;class T&gt; struct less_equal : binary_function&lt;T,T,bool&gt; {<br />
635 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
636    };<br />
637 <br />
638    20.3.4  Logical operations                    [lib.logical.operations]<br />
639 <br />
640 T  template &lt;class T&gt; struct logical_and : binary_function&lt;T,T,bool&gt; {<br />
641 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
642    };<br />
643 <br />
644 T  template &lt;class T&gt; struct logical_or : binary_function&lt;T,T,bool&gt; {<br />
645 V   bool operator()(const T&amp; x, const T&amp; y) const;<br />
646    };<br />
647 <br />
648 T  template &lt;class T&gt; struct logical_not : unary_function&lt;T,bool&gt; {<br />
649 V   bool operator()(const T&amp; x) const;<br />
650    };<br />
651 <br />
652    20.3.5  Negators                                        [lib.negators]<br />
653 <br />
654 T  template &lt;class Predicate&gt;<br />
655     class unary_negate<br />
656       : public unary_function&lt;typename Predicate::argument_type,bool&gt; {<br />
657    public:<br />
658 T   explicit unary_negate(const Predicate&amp; pred);<br />
659 V   bool operator()(const typename Predicate::argument_type&amp; x) const;<br />
660    };<br />
661 <br />
662 T  template &lt;class Predicate&gt;<br />
663     class binary_negate<br />
664       : public binary_function&lt;typename Predicate::first_argument_type,<br />
665           typename Predicate::second_argument_type, bool&gt; {<br />
666     public:<br />
667 T     explicit binary_negate(const Predicate&amp; pred);<br />
668 V     bool operator()(const typename Predicate::first_argument_type&amp;  x,<br />
669           const typename Predicate::second_argument_type&amp; y) const;<br />
670     };<br />
671 <br />
672 <br />
673    20.3.6  Binders                                          [lib.binders]<br />
674 <br />
675    20.3.6.1  Template class binder1st                    [lib.binder.1st]<br />
676 T   template &lt;class Operation&gt;<br />
677     class binder1st<br />
678       : public unary_function&lt;typename Operation::second_argument_type,<br />
679                               typename Operation::result_type&gt; {<br />
680     protected:<br />
681 T     Operation                      op;<br />
682 T     typename Operation::first_argument_type value;<br />
683     public:<br />
684 V     binder1st(const Operation&amp; x,<br />
685                 const typename Operation::first_argument_type&amp; y);<br />
686 V     typename Operation::result_type<br />
687         operator()(const typename Operation::second_argument_type&amp; x) const;<br />
688     };<br />
689 <br />
690    20.3.6.2  bind1st                                       [lib.bind.1st]<br />
691 <br />
692 V  template &lt;class Operation, class T&gt;<br />
693     binder1st&lt;Operation&gt; bind1st(const Operation&amp; op, const T&amp; x);<br />
694 <br />
695    20.3.6.3  Template class binder2nd                    [lib.binder.2nd]<br />
696 T   template &lt;class Operation&gt;<br />
697     class binder2nd<br />
698       : public unary_function&lt;typename Operation::first_argument_type,<br />
699                               typename Operation::result_type&gt; {<br />
700     protected:<br />
701 T     Operation                       op;<br />
702 T     typename Operation::second_argument_type value;<br />
703     public:<br />
704 V     binder2nd(const Operation&amp; x,<br />
705                 const typename Operation::second_argument_type&amp; y);<br />
706 V     typename Operation::result_type<br />
707         operator()(const typename Operation::first_argument_type&amp; x) const;<br />
708     };<br />
709 <br />
710    20.3.6.4  bind2nd                                       [lib.bind.2nd]<br />
711 <br />
712 T  template &lt;class Operation, class T&gt;<br />
713     binder2nd&lt;Operation&gt; bind2nd(const Operation&amp; op, const T&amp; x);<br />
714 <br />
715 <br />
716    20.3.7  Adaptors for pointers to       [lib.function.pointer.adaptors]<br />
717        functions<br />
718 <br />
719    1 To  allow  pointers to (unary and binary) functions to work with func-<br />
720    tion adaptors the library provides:<br />
721 <br />
722 T   template &lt;class Arg, class Result&gt;<br />
723     class pointer_to_unary_function : public unary_function&lt;Arg, Result&gt; {<br />
724     public:<br />
725 T     explicit pointer_to_unary_function(Result (*f)(Arg));<br />
726 V     Result operator()(Arg x) const;<br />
727     };<br />
728 <br />
729 T  template &lt;class Arg, class Result&gt;<br />
730     pointer_to_unary_function&lt;Arg, Result&gt; ptr_fun(Result (*f)(Arg));<br />
731 <br />
732 T       template &lt;class Arg1, class Arg2, class Result&gt;<br />
733         class pointer_to_binary_function :<br />
734           public binary_function&lt;Arg1,Arg2,Result&gt; {<br />
735         public:<br />
736 T         explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));<br />
737 V         Result operator()(Arg1 x, Arg2 y) const;<br />
738         };<br />
739 <br />
740 <br />
741    20.3.8  Adaptors for pointers to         [lib.member.pointer.adaptors]<br />
742        members<br />
743 <br />
744 T  template &lt;class S, class T&gt; class mem_fun_t<br />
745           : public unary_function&lt;T*, S&gt; {<br />
746    public:<br />
747 T   explicit mem_fun_t(S (T::*p)());<br />
748 V   S operator()(T* p) const;<br />
749    };<br />
750 <br />
751 T   template &lt;class S, class T, class A&gt; class mem_fun1_t<br />
752           : public binary_function&lt;T*, A, S&gt; {<br />
753     public:<br />
754 T     explicit mem_fun1_t(S (T::*p)(A));<br />
755 V     S operator()(T* p, A x) const;<br />
756    };<br />
757 <br />
758 V   template&lt;class S, class T&gt; mem_fun_t&lt;S,T&gt;<br />
759        mem_fun(S (T::*f)());<br />
760 V   template&lt;class S, class T, class A&gt; mem_fun1_t&lt;S,T,A&gt;<br />
761        mem_fun(S (T::*f)(A));<br />
762 <br />
763 T   template &lt;class S, class T&gt; class mem_fun_ref_t<br />
764           : public unary_function&lt;T, S&gt; {<br />
765     public:<br />
766 T     explicit mem_fun_ref_t(S (T::*p)());<br />
767 V     S operator()(T&amp; p) const;<br />
768    };<br />
769 <br />
770 T   template &lt;class S, class T, class A&gt; class mem_fun1_ref_t<br />
771           : public binary_function&lt;T, A, S&gt; {<br />
772     public:<br />
773 T     explicit mem_fun1_ref_t(S (T::*p)(A));<br />
774 V     S operator()(T&amp; p, A x) const;<br />
775    };<br />
776 <br />
777 T   template&lt;class S, class T&gt; mem_fun_ref_t&lt;S,T&gt;<br />
778        mem_fun_ref(S (T::*f)());<br />
779 <br />
780 T   template&lt;class S, class T, class A&gt; mem_fun1_ref_t&lt;S,T,A&gt;<br />
781        mem_fun_ref(S (T::*f)(A));<br />
782 <br />
783 T  template &lt;class S, class T&gt; class const_mem_fun_t<br />
784         : public unary_function&lt;T*, S&gt; {<br />
785    public:<br />
786 T   explicit const_mem_fun_t(S (T::*p)() const);<br />
787 V   S operator()(const T* p) const;<br />
788    };<br />
789 <br />
790 T  template &lt;class S, class T, class A&gt; class const_mem_fun1_t<br />
791         : public binary_function&lt;T*, A, S&gt; {<br />
792    public:<br />
793 T   explicit const mem_fun1_t(S (T::*p)(A) const);<br />
794 V   S operator()(const T* p, A x) const;<br />
795    };<br />
796 <br />
797 V   template&lt;class S, class T&gt; const_mem_fun_t&lt;S,T&gt;<br />
798        mem_fun(S (T::*f)() const);<br />
799 V   template&lt;class S, class T, class A&gt; const_mem_fun1_t&lt;S,T,A&gt;<br />
800        mem_fun(S (T::*f)(A) const);<br />
801 <br />
802 T   template &lt;class S, class T&gt; class const_mem_fun_ref_t<br />
803           : public unary_function&lt;T, S&gt; {<br />
804     public:<br />
805 T     explicit const_mem_fun_ref_t(S (T::*p)() const);<br />
806 V     S operator()(const T&amp; p) const;<br />
807    };<br />
808 <br />
809 T   template &lt;class S, class T, class A&gt; class const_mem_fun1_ref_t<br />
810           : public binary_function&lt;T, A, S&gt; {<br />
811     public:<br />
812 T     explicit const_mem_fun1_ref_t(S (T::*p)(A) const);<br />
813 V     S operator()(const T&amp; p, A x) const;<br />
814    };<br />
815 <br />
816 T   template&lt;class S, class T&gt; const_mem_fun_ref_t&lt;S,T&gt;<br />
817        mem_fun_ref(S (T::*f)() const);<br />
818 <br />
819 T   template&lt;class S, class T, class A&gt; const_mem_fun1_ref_t&lt;S,T,A&gt;<br />
820         mem_fun_ref(S (T::*f)(A) const);<br />
821 <br />
822    20.4  Memory                                              [lib.memory]<br />
823 <br />
824    Header &lt;memory&gt; synopsis<br />
825 <br />
826     // _lib.default.allocator_, the default allocator:<br />
827 T   template &lt;class T&gt; class allocator;<br />
828 T   template &lt;&gt; class allocator&lt;void&gt;;<br />
829 T   template &lt;class T, class U&gt;<br />
830       bool operator==(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();<br />
831 T   template &lt;class T, class U&gt;<br />
832       bool operator!=(const allocator&lt;T&gt;&amp;, const allocator&lt;U&gt;&amp;) throw();<br />
833     // _lib.storage.iterator_, raw storage iterator:<br />
834 T   template &lt;class OutputIterator, class T&gt; class raw_storage_iterator;<br />
835     // _lib.temporary.buffer_, temporary buffers:<br />
836 T   template &lt;class T&gt;<br />
837       pair&lt;T*,ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);<br />
838 T   template &lt;class T&gt;<br />
839       void return_temporary_buffer(T* p);<br />
840     // _lib.specialized.algorithms_, specialized algorithms:<br />
841 T   template &lt;class InputIterator, class ForwardIterator&gt;<br />
842       ForwardIterator<br />
843         uninitialized_copy(InputIterator first, InputIterator last,<br />
844                            ForwardIterator result);<br />
845 T   template &lt;class ForwardIterator, class T&gt;<br />
846       void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
847                               const T&amp; x);<br />
848 T   template &lt;class ForwardIterator, class Size, class T&gt;<br />
849       void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);<br />
850     // _lib.auto.ptr_, pointers:<br />
851 X   template&lt;class X&gt; class auto_ptr;<br />
852    }<br />
853 <br />
854    20.4.1  The default allocator                  [lib.default.allocator]<br />
855 <br />
856 T   template &lt;class T&gt; class allocator;<br />
857     // specialize for void:<br />
858 T   template &lt;&gt; class allocator&lt;void&gt; {<br />
859     public:<br />
860 T     typedef void*       pointer;<br />
861 T     typedef const void* const_pointer;<br />
862       // reference-to-void members are impossible.<br />
863 T     typedef void  value_type;<br />
864 T     template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };<br />
865     };<br />
866 <br />
867 T   template &lt;class T&gt; class allocator {<br />
868      public:<br />
869 T     typedef size_t    size_type;<br />
870 T     typedef ptrdiff_t difference_type;<br />
871 T     typedef T*        pointer;<br />
872 T     typedef const T*  const_pointer;<br />
873 T     typedef T&amp;        reference;<br />
874 T     typedef const T&amp;  const_reference;<br />
875 T     typedef T         value_type;<br />
876 T     template &lt;class U&gt; struct rebind { typedef allocator&lt;U&gt; other; };<br />
877 T     allocator() throw();<br />
878 T     allocator(const allocator&amp;) throw();<br />
879 T     template &lt;class U&gt; allocator(const allocator&lt;U&gt;&amp;) throw();<br />
880 T    ~allocator() throw();<br />
881 T     pointer address(reference x) const;<br />
882 T     const_pointer address(const_reference x) const;<br />
883 T     pointer allocate(<br />
884         size_type, allocator&lt;void&gt;::const_pointer hint = 0);<br />
885 T     void deallocate(pointer p, size_type n);<br />
886 T     size_type max_size() const throw();<br />
887 T     void construct(pointer p, const T&amp; val);<br />
888 T     void destroy(pointer p);<br />
889     };<br />
890 <br />
891    20.4.1.2  allocator globals                    [lib.allocator.globals]<br />
892 <br />
893 T  template &lt;class T1, class T2&gt;<br />
894     bool operator==(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();<br />
895 T  template &lt;class T1, class T2&gt;<br />
896     bool operator!=(const allocator&lt;T1&gt;&amp;, const allocator&lt;T2&gt;&amp;) throw();<br />
897 <br />
898    20.4.2  Raw storage iterator                    [lib.storage.iterator]<br />
899 <br />
900 T   template &lt;class OutputIterator, class T&gt;<br />
901     class raw_storage_iterator<br />
902       : public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
903     public:<br />
904 T     explicit raw_storage_iterator(OutputIterator x);<br />
905 T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator*();<br />
906 T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator=(const T&amp; element);<br />
907 T     raw_storage_iterator&lt;OutputIterator,T&gt;&amp; operator++();<br />
908 T     raw_storage_iterator&lt;OutputIterator,T&gt;  operator++(int);<br />
909     };<br />
910 <br />
911    20.4.3  Temporary buffers                       [lib.temporary.buffer]<br />
912 <br />
913 T  template &lt;class T&gt;<br />
914     pair&lt;T*, ptrdiff_t&gt; get_temporary_buffer(ptrdiff_t n);<br />
915 <br />
916 T  template &lt;class T&gt; void return_temporary_buffer(T* p);<br />
917 <br />
918    20.4.4  Specialized algorithms            [lib.specialized.algorithms]<br />
919 <br />
920    20.4.4.1  uninitialized_copy                  [lib.uninitialized.copy]<br />
921 <br />
922 V  template &lt;class InputIterator, class ForwardIterator&gt;<br />
923     ForwardIterator<br />
924       uninitialized_copy(InputIterator first, InputIterator last,<br />
925                          ForwardIterator result);<br />
926 <br />
927    20.4.4.2  uninitialized_fill                  [lib.uninitialized.fill]<br />
928 <br />
929 V  template &lt;class ForwardIterator, class T&gt;<br />
930     void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
931                             const T&amp; x);<br />
932 <br />
933    20.4.4.3  uninitialized_fill_n              [lib.uninitialized.fill.n]<br />
934 <br />
935 V  template &lt;class ForwardIterator, class Size, class T&gt;<br />
936     void uninitialized_fill_n(ForwardIterator first, Size n, const T&amp; x);<br />
937 <br />
938    20.4.5  Template class auto_ptr                         [lib.auto.ptr]<br />
939 <br />
940 X   template&lt;class X&gt; class auto_ptr {<br />
941       template &lt;class Y&gt; struct auto_ptr_ref {};<br />
942     public:<br />
943 T     typedef X element_type;<br />
944       // _lib.auto.ptr.cons_ construct/copy/destroy:<br />
945 T     explicit auto_ptr(X* p =0) throw();<br />
946 T     auto_ptr(auto_ptr&amp;) throw();<br />
947 T     template&lt;class Y&gt; auto_ptr(auto_ptr&lt;Y&gt;&amp;) throw();<br />
948 T     auto_ptr&amp; operator=(auto_ptr&amp;) throw();<br />
949 T     template&lt;class Y&gt; auto_ptr&amp; operator=(auto_ptr&lt;Y&gt;&amp;) throw();<br />
950 T    ~auto_ptr() throw();<br />
951       // _lib.auto.ptr.members_ members:<br />
952 T     X&amp; operator*() const throw();<br />
953 T     X* operator-&gt;() const throw();<br />
954 T     X* get() const throw();<br />
955 T     X* release() throw();<br />
956 T     void reset(X* p =0) throw();<br />
957 <br />
958       // _lib.auto.ptr.conv_ conversions:<br />
959 X     auto_ptr(auto_ptr_ref&lt;X&gt;) throw();<br />
960 X     template&lt;class Y&gt; operator auto_ptr_ref&lt;Y&gt;() throw();<br />
961 X     template&lt;class Y&gt; operator auto_ptr&lt;Y&gt;() throw();<br />
962     };<br />
963 <br />
964    20.4.6  C Library                                       [lib.c.malloc]<br />
965 <br />
966                     Table 7--Header &lt;cstdlib&gt; synopsis<br />
967 <br />
968 X                    Functions:   calloc   malloc<br />
969                                   free     realloc<br />
970 <br />
971 <br />
972                     Table 8--Header &lt;cstring&gt; synopsis<br />
973 <br />
974 X                    Macro:       NULL<br />
975 X                    Type:        size_t<br />
976 X                    Functions:   memchr    memcmp<br />
977 X                    memcpy       memmove   memset<br />
978 <br />
979                      Table 9--Header &lt;ctime&gt; synopsis<br />
980 <br />
981 X          Macros:   NULL<br />
982 X          Types:    size_t   clock_t    time_t<br />
983 X          Struct:   tm<br />
984            Functions:<br />
985 X          asctime   clock    difftime   localtime   strftime<br />
986 X          ctime     gmtime   mktime     time<br />
987 <br />
988    21.1.1  Character traits requirements        [lib.char.traits.require]<br />
989 <br />
990    2 The struct template<br />
991 T  template&lt;class charT&gt; struct char_traits;<br />
992    shall be provided in the header &lt;string&gt; as a basis for  explicit spe-<br />
993    cializations.<br />
994 <br />
995 <br />
996    21.1.3.1  struct                [lib.char.traits.specializations.char]<br />
997        char_traits&lt;char&gt;<br />
998 <br />
999 T   template&lt;&gt;<br />
1000     struct char_traits&lt;char&gt; {<br />
1001 T     typedef char        char_type;<br />
1002 T     typedef int         int_type;<br />
1003 T     typedef streamoff   off_type;<br />
1004 T     typedef streampos   pos_type;<br />
1005 T     typedef mbstate_t   state_type;<br />
1006 <br />
1007 T     static void assign(char_type&amp; c1, const char_type&amp; c2);<br />
1008 T     static bool eq(const char_type&amp; c1, const char_type&amp; c2);<br />
1009 T     static bool lt(const char_type&amp; c1, const char_type&amp; c2);<br />
1010 <br />
1011 T     static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
1012 T     static size_t length(const char_type* s);<br />
1013 T     static const char_type* find(const char_type* s, size_t n,<br />
1014                                    const char_type&amp; a);<br />
1015 T     static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
1016 T     static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
1017 T     static char_type* assign(char_type* s, size_t n, char_type a);<br />
1018 <br />
1019 T     static int_type not_eof(const int_type&amp; c);<br />
1020 T     static char_type to_char_type(const int_type&amp; c);<br />
1021 T     static int_type to_int_type(const char_type&amp; c);<br />
1022 T     static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);<br />
1023 T     static int_type eof();<br />
1024     };<br />
1025 <br />
1026    21.1.3.2  struct             [lib.char.traits.specializations.wchar.t]<br />
1027        char_traits&lt;wchar_t&gt;<br />
1028 <br />
1029 V   template&lt;&gt;<br />
1030     struct char_traits&lt;wchar_t&gt; {<br />
1031 V     typedef wchar_t      char_type;<br />
1032 V     typedef wint_t       int_type;<br />
1033 V     typedef streamoff   off_type;<br />
1034 V     typedef wstreampos   pos_type;<br />
1035 V     typedef mbstate_t    state_type;<br />
1036 <br />
1037 V     static void assign(char_type&amp; c1, const char_type&amp; c2);<br />
1038 V     static bool eq(const char_type&amp; c1, const char_type&amp; c2);<br />
1039 V     static bool lt(const char_type&amp; c1, const char_type&amp; c2);<br />
1040 <br />
1041 V     static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
1042 V     static size_t length(const char_type* s);<br />
1043 V     static const char_type* find(const char_type* s, size_t n,<br />
1044                                    const char_type&amp; a);<br />
1045 V     static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
1046 V     static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
1047 V     static char_type* assign(char_type* s, size_t n, char_type a);<br />
1048 <br />
1049 V     static int_type not_eof(const int_type&amp; c);<br />
1050 V     static char_type to_char_type(const int_type&amp; c);<br />
1051 V     static int_type to_int_type(const char_type&amp; c);<br />
1052 V     static bool eq_int_type(const int_type&amp; c1, const int_type&amp; c2);<br />
1053 V     static int_type eof();<br />
1054     };<br />
1055 <br />
1056    21.2  String classes                              [lib.string.classes]<br />
1057 <br />
1058     // _lib.char.traits_, character traits:<br />
1059 V   template&lt;class charT&gt;<br />
1060       struct char_traits;<br />
1061 V   template &lt;&gt; struct char_traits&lt;char&gt;;<br />
1062 V   template &lt;&gt; struct char_traits&lt;wchar_t&gt;;<br />
1063 <br />
1064     // _lib.basic.string_, basic_string:<br />
1065 V   template&lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
1066              class Allocator = allocator&lt;charT&gt; &gt;<br />
1067       class basic_string;<br />
1068 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1069       basic_string&lt;charT,traits,Allocator&gt;<br />
1070         operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1071                   const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1072 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1073       basic_string&lt;charT,traits,Allocator&gt;<br />
1074         operator+(const charT* lhs,<br />
1075                   const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1076 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1077       basic_string&lt;charT,traits,Allocator&gt;<br />
1078         operator+(charT lhs, const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1079 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1080       basic_string&lt;charT,traits,Allocator&gt;<br />
1081         operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1082                   const charT* rhs);<br />
1083 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1084       basic_string&lt;charT,traits,Allocator&gt;<br />
1085         operator+(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs, charT rhs);<br />
1086 <br />
1087 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1088       bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1089                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1090 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1091       bool operator==(const charT* lhs,<br />
1092                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1093 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1094       bool operator==(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1095                       const charT* rhs);<br />
1096 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1097       bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1098                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1099 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1100       bool operator!=(const charT* lhs,<br />
1101                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1102 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1103       bool operator!=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1104                       const charT* rhs);<br />
1105 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1106       bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1107                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1108 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1109       bool operator&lt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1110                       const charT* rhs);<br />
1111 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1112       bool operator&lt; (const charT* lhs,<br />
1113                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1114 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1115       bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1116                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1117 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1118       bool operator&gt; (const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1119                       const charT* rhs);<br />
1120 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1121       bool operator&gt; (const charT* lhs,<br />
1122                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1123 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1124       bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1125                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1126 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1127       bool operator&lt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1128                       const charT* rhs);<br />
1129 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1130       bool operator&lt;=(const charT* lhs,<br />
1131                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1132 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1133       bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1134                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1135 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1136       bool operator&gt;=(const basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1137                       const charT* rhs);<br />
1138 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1139       bool operator&gt;=(const charT* lhs,<br />
1140                       const basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1141 <br />
1142     // _lib.string.special_:<br />
1143 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1144        void swap(basic_string&lt;charT,traits,Allocator&gt;&amp; lhs,<br />
1145                  basic_string&lt;charT,traits,Allocator&gt;&amp; rhs);<br />
1146 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1147      basic_istream&lt;charT,traits&gt;&amp;<br />
1148       operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp; is,<br />
1149                  basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
1150 T   template&lt;class charT, class traits, class Allocator&gt;<br />
1151      basic_ostream&lt;charT, traits&gt;&amp;<br />
1152       operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os,<br />
1153                  const basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
1154 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1155      basic_istream&lt;charT,traits&gt;&amp;<br />
1156        getline(basic_istream&lt;charT,traits&gt;&amp; is,<br />
1157                basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
1158                charT delim);<br />
1159 V   template&lt;class charT, class traits, class Allocator&gt;<br />
1160      basic_istream&lt;charT,traits&gt;&amp;<br />
1161        getline(basic_istream&lt;charT,traits&gt;&amp; is,<br />
1162                basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
1163 V   typedef basic_string&lt;char&gt; string;<br />
1164 T   typedef basic_string&lt;wchar_t&gt; wstring;<br />
1165    }<br />
1166 <br />
1167    21.3  Template class basic_string                   [lib.basic.string]<br />
1168 <br />
1169 V  namespace std {<br />
1170     template&lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
1171              class Allocator = allocator&lt;charT&gt; &gt;<br />
1172     class basic_string {<br />
1173     public:<br />
1174       // types:<br />
1175       typedef          traits                     traits_type;<br />
1176       typedef typename traits::char_type          value_type;<br />
1177       typedef          Allocator                  allocator_type;<br />
1178       typedef typename Allocator::size_type       size_type;<br />
1179       typedef typename Allocator::difference_type difference_type;<br />
1180       typedef typename Allocator::reference       reference;<br />
1181       typedef typename Allocator::const_reference const_reference;<br />
1182       typedef typename Allocator::pointer         pointer;<br />
1183       typedef typename Allocator::const_pointer   const_pointer;<br />
1184       typedef implementation defined             iterator;<br />
1185       typedef implementation defined             const_iterator;<br />
1186       typedef std::reverse_iterator&lt;iterator&gt; reverse_iterator;<br />
1187       typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
1188       static const size_type npos = -1;<br />
1189 <br />
1190       // _lib.string.cons_ construct/copy/destroy:<br />
1191 V     explicit basic_string(const Allocator&amp; a = Allocator());<br />
1192 V     basic_string(const basic_string&amp; str, size_type pos = 0,<br />
1193                    size_type n = npos, const Allocator&amp; a = Allocator());<br />
1194 V     basic_string(const charT* s,<br />
1195                    size_type n, const Allocator&amp; a = Allocator());<br />
1196 V     basic_string(const charT* s, const Allocator&amp; a = Allocator());<br />
1197 V     basic_string(size_type n, charT c, const Allocator&amp; a = Allocator());<br />
1198 V     template&lt;class InputIterator&gt;<br />
1199         basic_string(InputIterator begin, InputIterator end,<br />
1200                      const Allocator&amp; a = Allocator());<br />
1201 V    ~basic_string();<br />
1202 V     basic_string&amp; operator=(const basic_string&amp; str);<br />
1203 V     basic_string&amp; operator=(const charT* s);<br />
1204 V     basic_string&amp; operator=(charT c);<br />
1205       // _lib.string.iterators_ iterators:<br />
1206 V     iterator       begin();<br />
1207 V     const_iterator begin() const;<br />
1208 V     iterator       end();<br />
1209 V     const_iterator end() const;<br />
1210 <br />
1211 V     reverse_iterator       rbegin();<br />
1212 V     const_reverse_iterator rbegin() const;<br />
1213 V     reverse_iterator       rend();<br />
1214 V     const_reverse_iterator rend() const;<br />
1215       // _lib.string.capacity_ capacity:<br />
1216 V     size_type size() const;<br />
1217 V     size_type length() const;<br />
1218 V     size_type max_size() const;<br />
1219 V     void resize(size_type n, charT c);<br />
1220 V     void resize(size_type n);<br />
1221 V     size_type capacity() const;<br />
1222 V     void reserve(size_type res_arg = 0);<br />
1223 V     void clear();<br />
1224 V     bool empty() const;<br />
1225       // _lib.string.access_ element access:<br />
1226 V     const_reference operator[](size_type pos) const;<br />
1227 V     reference       operator[](size_type pos);<br />
1228 V     const_reference at(size_type n) const;<br />
1229 V     reference       at(size_type n);<br />
1230       // _lib.string.modifiers_ modifiers:<br />
1231 V     basic_string&amp; operator+=(const basic_string&amp; str);<br />
1232 V     basic_string&amp; operator+=(const charT* s);<br />
1233 V     basic_string&amp; operator+=(charT c);<br />
1234 V     basic_string&amp; append(const basic_string&amp; str);<br />
1235 V     basic_string&amp; append(const basic_string&amp; str, size_type pos,<br />
1236                            size_type n);<br />
1237 V     basic_string&amp; append(const charT* s, size_type n);<br />
1238 V     basic_string&amp; append(const charT* s);<br />
1239 V     basic_string&amp; append(size_type n, charT c);<br />
1240 V     template&lt;class InputIterator&gt;<br />
1241         basic_string&amp; append(InputIterator first, InputIterator last);<br />
1242 V     void push_back(const charT);<br />
1243 <br />
1244 V     basic_string&amp; assign(const basic_string&amp;);<br />
1245 V     basic_string&amp; assign(const basic_string&amp; str, size_type pos,<br />
1246                            size_type n);<br />
1247 V     basic_string&amp; assign(const charT* s, size_type n);<br />
1248 V     basic_string&amp; assign(const charT* s);<br />
1249 V     basic_string&amp; assign(size_type n, charT c);<br />
1250 V     template&lt;class InputIterator&gt;<br />
1251         basic_string&amp; assign(InputIterator first, InputIterator last);<br />
1252 V     basic_string&amp; insert(size_type pos1, const basic_string&amp; str);<br />
1253 V     basic_string&amp; insert(size_type pos1, const basic_string&amp; str,<br />
1254                            size_type pos2, size_type n);<br />
1255 V     basic_string&amp; insert(size_type pos, const charT* s, size_type n);<br />
1256 V     basic_string&amp; insert(size_type pos, const charT* s);<br />
1257 V     basic_string&amp; insert(size_type pos, size_type n, charT c);<br />
1258 V     iterator insert(iterator p, charT c);<br />
1259 V     void     insert(iterator p, size_type n, charT c);<br />
1260 V     template&lt;class InputIterator&gt;<br />
1261         void insert(iterator p, InputIterator first, InputIterator last);<br />
1262 V     basic_string&amp; erase(size_type pos = 0, size_type n = npos);<br />
1263 V     iterator erase(iterator position);<br />
1264 V     iterator erase(iterator first, iterator last);<br />
1265 V     basic_string&amp; replace(size_type pos1, size_type n1,<br />
1266                             const basic_string&amp; str);<br />
1267 V     basic_string&amp; replace(size_type pos1, size_type n1,<br />
1268                             const basic_string&amp; str,<br />
1269                             size_type pos2, size_type n2);<br />
1270 V     basic_string&amp; replace(size_type pos, size_type n1, const charT* s,<br />
1271                             size_type n2);<br />
1272 V     basic_string&amp; replace(size_type pos, size_type n1, const charT* s);<br />
1273 V     basic_string&amp; replace(size_type pos, size_type n1, size_type n2,<br />
1274                             charT c);<br />
1275 V     basic_string&amp; replace(iterator i1, iterator i2, const basic_string&amp; str);<br />
1276 V     basic_string&amp; replace(iterator i1, iterator i2, const charT* s,<br />
1277                             size_type n);<br />
1278 V     basic_string&amp; replace(iterator i1, iterator i2, const charT* s);<br />
1279 V     basic_string&amp; replace(iterator i1, iterator i2,<br />
1280                             size_type n, charT c);<br />
1281 V     template&lt;class InputIterator&gt;<br />
1282         basic_string&amp; replace(iterator i1, iterator i2,<br />
1283                               InputIterator j1, InputIterator j2);<br />
1284 V     size_type copy(charT* s, size_type n, size_type pos = 0) const;<br />
1285 V     void swap(basic_string&lt;charT,traits,Allocator&gt;&amp;);<br />
1286       // _lib.string.ops_ string operations:<br />
1287 V     const charT* c_str() const;         // explicit<br />
1288 V     const charT* data() const;<br />
1289 V     allocator_type get_allocator() const;<br />
1290 V     size_type find (const basic_string&amp; str, size_type pos = 0) const;<br />
1291 V     size_type find (const charT* s, size_type pos, size_type n) const;<br />
1292 V     size_type find (const charT* s, size_type pos = 0) const;<br />
1293 V     size_type find (charT c, size_type pos = 0) const;<br />
1294 V     size_type rfind(const basic_string&amp; str, size_type pos = npos) const;<br />
1295 V     size_type rfind(const charT* s, size_type pos, size_type n) const;<br />
1296 V     size_type rfind(const charT* s, size_type pos = npos) const;<br />
1297 V     size_type rfind(charT c, size_type pos = npos) const;<br />
1298 <br />
1299 V     size_type find_first_of(const basic_string&amp; str,<br />
1300                               size_type pos = 0) const;<br />
1301 V     size_type find_first_of(const charT* s,<br />
1302                               size_type pos, size_type n) const;<br />
1303 V     size_type find_first_of(const charT* s, size_type pos = 0) const;<br />
1304 V     size_type find_first_of(charT c, size_type pos = 0) const;<br />
1305 V     size_type find_last_of (const basic_string&amp; str,<br />
1306                               size_type pos = npos) const;<br />
1307 V     size_type find_last_of (const charT* s,<br />
1308                               size_type pos, size_type n) const;<br />
1309 V     size_type find_last_of (const charT* s, size_type pos = npos) const;<br />
1310 V     size_type find_last_of (charT c, size_type pos = npos) const;<br />
1311 V     size_type find_first_not_of(const basic_string&amp; str,<br />
1312                                   size_type pos = 0) const;<br />
1313 V     size_type find_first_not_of(const charT* s, size_type pos,<br />
1314                                   size_type n) const;<br />
1315 V     size_type find_first_not_of(const charT* s, size_type pos = 0) const;<br />
1316 V     size_type find_first_not_of(charT c, size_type pos = 0) const;<br />
1317 V     size_type find_last_not_of (const basic_string&amp; str,<br />
1318                                   size_type pos = npos) const;<br />
1319 V     size_type find_last_not_of (const charT* s, size_type pos,<br />
1320                                   size_type n) const;<br />
1321 V     size_type find_last_not_of (const charT* s,<br />
1322                                   size_type pos = npos) const;<br />
1323 V     size_type find_last_not_of (charT c, size_type pos = npos) const;<br />
1324 V     basic_string substr(size_type pos = 0, size_type n = npos) const;<br />
1325 V     int compare(const basic_string&amp; str) const;<br />
1326 V     int compare(size_type pos1, size_type n1,<br />
1327                   const basic_string&amp; str) const;<br />
1328 V     int compare(size_type pos1, size_type n1,<br />
1329                   const basic_string&amp; str,<br />
1330                   size_type pos2, size_type n2) const;<br />
1331 V     int compare(const charT* s) const;<br />
1332 V     int compare(size_type pos1, size_type n1,<br />
1333                   const charT* s, size_type n2 = npos) const;<br />
1334     };<br />
1335    }<br />
1336 <br />
1337    21.4  Null-terminated sequence utilities               [lib.c.strings]<br />
1338 <br />
1339                     Table 10--Header &lt;cctype&gt; synopsis<br />
1340 <br />
1341             isalnum   isdigit   isprint   isupper    tolower<br />
1342 X           isalpha   isgraph   ispunct   isxdigit   toupper<br />
1343             iscntrl   islower   isspace<br />
1344 <br />
1345                    Table 11--Header &lt;cwctype&gt; synopsis<br />
1346 <br />
1347 X  Macro:     WEOF &lt;cwctype&gt;<br />
1348 X  Types:     wctrans_t   wctype_t   wint_t &lt;cwctype&gt;<br />
1349    Functions:<br />
1350 X  iswalnum   iswctype    iswlower   iswspace    towctrans   wctrans<br />
1351 X  iswalpha   iswdigit    iswprint   iswupper    towlower    wctype<br />
1352 X  iswcntrl   iswgraph    iswpunct   iswxdigit   towupper<br />
1353 <br />
1354                    Table 12--Header &lt;cstring&gt; synopsis<br />
1355 <br />
1356 X           Macro:    NULL &lt;cstring&gt;<br />
1357 X           Type:     size_t &lt;cstring&gt;<br />
1358             Functions:<br />
1359 X           memchr    strcat    strcspn    strncpy   strtok<br />
1360 X           memcmp    strchr    strerror   strpbrk   strxfrm<br />
1361 X           memcpy    strcmp    strlen     strrchr<br />
1362 X           memmove   strcoll   strncat    strspn<br />
1363 X           memset    strcpy    strncmp    strstr<br />
1364 <br />
1365                     Table 13--Header &lt;cwchar&gt; synopsis<br />
1366    Macros:    NULL &lt;cwchar&gt;   WCHAR_MAX         WCHAR_MIN   WEOF &lt;cwchar&gt;<br />
1367    Types:     mbstate_t       wint_t &lt;cwchar&gt;   size_t<br />
1368    Functions:<br />
1369 X  btowc      getwchar        ungetwc           wcscpy      wcsrtombs   wmemchr<br />
1370 X  fgetwc     mbrlen          vfwprintf         wcscspn     wcsspn      wmemcmp<br />
1371 X  fgetws     mbrtowc         vswprintf         wcsftime    wcsstr      wmemcpy<br />
1372 X  fputwc     mbsinit         vwprintf          wcslen      wcstod      wmemmove<br />
1373 X  fputws     mbsrtowcs       wcrtomb           wcsncat     wcstok      wmemset<br />
1374 X  fwide      putwc           wcscat            wcsncmp     wcstol      wprintf<br />
1375 X  fwprintf   putwchar        wcschr            wcsncpy     wcstoul     wscanf<br />
1376 X  fwscanf    swprintf        wcscmp            wcspbrk     wcsxfrm<br />
1377 X  getwc      swscanf         wcscoll           wcsrchr     wctob<br />
1378 <br />
1379                    Table 14--Header &lt;cstdlib&gt; synopsis<br />
1380 <br />
1381                Macros:   MB_CUR_MAX<br />
1382                Functions:<br />
1383 X              atol      mblen        strtod    wctomb<br />
1384 X              atof      mbstowcs     strtol    wcstombs<br />
1385 X              atoi      mbtowc       strtoul<br />
1386 <br />
1387 X  const char* strchr(const char* s, int c);<br />
1388 X       char* strchr(      char* s, int c);<br />
1389 <br />
1390 X  const char* strpbrk(const char* s1, const char* s2);<br />
1391 X       char* strpbrk(      char* s1, const char* s2);<br />
1392 <br />
1393 X  const char* strrchr(const char* s, int c);<br />
1394 X       char* strrchr(      char* s, int c);<br />
1395 <br />
1396 X  const char* strstr(const char* s1, const char* s2);<br />
1397 X       char* strstr(      char* s1, const char* s2);<br />
1398 <br />
1399 X  const void* memchr(const void* s, int c, size_t n);<br />
1400 X       void* memchr(      void* s, int c, size_t n);<br />
1401 <br />
1402 X  const wchar_t* wcschr(const wchar_t* s, wchar_t c);<br />
1403 X       wchar_t* wcschr(      wchar_t* s, wchar_t c);<br />
1404 <br />
1405 X  const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);<br />
1406 X       wchar_t* wcspbrk(      wchar_t* s1, const wchar_t* s2);<br />
1407 <br />
1408 X  const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);<br />
1409 X       wchar_t* wcsrchr(      wchar_t* s, wchar_t c);<br />
1410 <br />
1411 X  const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);<br />
1412 X       wchar_t* wcsstr(      wchar_t* s1, const wchar_t* s2);<br />
1413 <br />
1414 X  const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);<br />
1415 X       wchar_t* wmemchr(      wchar_t* s, wchar_t c, size_t n);<br />
1416 <br />
1417    [for initial efforts on the above, see shadow/string.h]<br />
1418 <br />
1419    22.1  Locales                                            [lib.locales]<br />
1420 <br />
1421    Header &lt;locale&gt; synopsis<br />
1422 <br />
1423     // _lib.locale_, locale:<br />
1424 T   class locale;<br />
1425 T   template &lt;class Facet&gt; const Facet&amp; use_facet(const locale&amp;);<br />
1426 T   template &lt;class Facet&gt; bool         has_facet(const locale&amp;) throw();<br />
1427 <br />
1428     // _lib.locale.convenience_, convenience interfaces:<br />
1429 T   template &lt;class charT&gt; bool isspace (charT c, const locale&amp; loc);<br />
1430 T   template &lt;class charT&gt; bool isprint (charT c, const locale&amp; loc);<br />
1431 T   template &lt;class charT&gt; bool iscntrl (charT c, const locale&amp; loc);<br />
1432 T   template &lt;class charT&gt; bool isupper (charT c, const locale&amp; loc);<br />
1433 T   template &lt;class charT&gt; bool islower (charT c, const locale&amp; loc);<br />
1434 T   template &lt;class charT&gt; bool isalpha (charT c, const locale&amp; loc);<br />
1435 T   template &lt;class charT&gt; bool isdigit (charT c, const locale&amp; loc);<br />
1436 T   template &lt;class charT&gt; bool ispunct (charT c, const locale&amp; loc);<br />
1437 T   template &lt;class charT&gt; bool isxdigit(charT c, const locale&amp; loc);<br />
1438 T   template &lt;class charT&gt; bool isalnum (charT c, const locale&amp; loc);<br />
1439 T   template &lt;class charT&gt; bool isgraph (charT c, const locale&amp; loc);<br />
1440 T   template &lt;class charT&gt; charT toupper(charT c, const locale&amp; loc);<br />
1441 T   template &lt;class charT&gt; charT tolower(charT c, const locale&amp; loc);<br />
1442     // _lib.category.ctype_ and _lib.facet.ctype.special_, ctype:<br />
1443     class ctype_base;<br />
1444 T   template &lt;class charT&gt; class ctype;<br />
1445 T   template &lt;&gt;            class ctype&lt;char&gt;;             // specialization<br />
1446 S   template &lt;class charT&gt; class ctype_byname;<br />
1447 S   template &lt;&gt;            class ctype_byname&lt;char&gt;;      // specialization<br />
1448 T   class codecvt_base;<br />
1449 X   template &lt;class internT, class externT, class stateT&gt; class codecvt;<br />
1450 S   template &lt;class internT, class externT, class stateT&gt; class codecvt_byname;<br />
1451     // _lib.category.numeric_ and _lib.facet.numpunct_, numeric:<br />
1452 X   template &lt;class charT, class InputIterator&gt;  class num_get;<br />
1453 X   template &lt;class charT, class OutputIterator&gt; class num_put;<br />
1454 T   template &lt;class charT&gt; class numpunct;<br />
1455 S   template &lt;class charT&gt; class numpunct_byname;<br />
1456     // _lib.category.collate_, collation:<br />
1457 T   template &lt;class charT&gt; class collate;<br />
1458 S   template &lt;class charT&gt; class collate_byname;<br />
1459     // _lib.category.time_, date and time:<br />
1460 T   class time_base;<br />
1461 S   template &lt;class charT, class InputIterator&gt;  class time_get;<br />
1462 S   template &lt;class charT, class InputIterator&gt;  class time_get_byname;<br />
1463 S   template &lt;class charT, class OutputIterator&gt; class time_put;<br />
1464 S   template &lt;class charT, class OutputIterator&gt; class time_put_byname;<br />
1465     // _lib.category.monetary_, money:<br />
1466 T   class money_base;<br />
1467 S   template &lt;class charT, class InputIterator&gt;  class money_get;<br />
1468 S   template &lt;class charT, class OutputIterator&gt; class money_put;<br />
1469 S   template &lt;class charT, bool Intl&gt; class moneypunct;<br />
1470 S   template &lt;class charT, bool Intl&gt; class moneypunct_byname;<br />
1471     // _lib.category.messages_, message retrieval:<br />
1472 T   class messages_base;<br />
1473 S   template &lt;class charT&gt; class messages;<br />
1474 S   template &lt;class charT&gt; class messages_byname;<br />
1475 <br />
1476 <br />
1477    22.1.1  Class locale                                      [lib.locale]<br />
1478 <br />
1479 X   class locale {<br />
1480     public:<br />
1481       // types:<br />
1482 T     class facet;<br />
1483 T     class id;<br />
1484 T     typedef int category;<br />
1485 T     static const category   // values assigned here are for exposition only<br />
1486 T       none     = 0,<br />
1487 T       collate  = 0x010, ctype    = 0x020,<br />
1488 T       monetary = 0x040, numeric  = 0x080,<br />
1489 T       time     = 0x100, messages = 0x200,<br />
1490 T       all = collate | ctype | monetary | numeric | time  | messages;<br />
1491       // construct/copy/destroy:<br />
1492 T     locale() throw()<br />
1493 T     locale(const locale&amp; other) throw()<br />
1494 X     explicit locale(const char* std_name);<br />
1495 X     locale(const locale&amp; other, const char* std_name, category);<br />
1496 T     template &lt;class Facet&gt; locale(const locale&amp; other, Facet* f);<br />
1497 T     locale(const locale&amp; other, const locale&amp; one, category);<br />
1498 T    ~locale() throw();           // non-virtual<br />
1499 T     const locale&amp; operator=(const locale&amp; other) throw();<br />
1500 T     template &lt;class Facet&gt; locale combine(const locale&amp; other) const;<br />
1501       // locale operations:<br />
1502 X     basic_string&lt;char&gt;                  name() const;<br />
1503 T     bool operator==(const locale&amp; other) const;<br />
1504 T     bool operator!=(const locale&amp; other) const;<br />
1505 T     template &lt;class charT, class Traits, class Allocator&gt;<br />
1506         bool operator()(const basic_string&lt;charT,Traits,Allocator&gt;&amp; s1,<br />
1507                         const basic_string&lt;charT,Traits,Allocator&gt;&amp; s2) const;<br />
1508       // global locale objects:<br />
1509 T     static       locale  global(const locale&amp;);<br />
1510 T     static const locale&amp; classic();<br />
1511     };<br />
1512 <br />
1513    22.1.1.1  locale types                              [lib.locale.types]<br />
1514 <br />
1515    22.1.1.1.1  Type locale::category                [lib.locale.category]<br />
1516 <br />
1517 T  typedef int category;<br />
1518 <br />
1519 T   none, collate, ctype, monetary, numeric, time, and messages<br />
1520 <br />
1521       [required locale members]<br />
1522 T     collate&lt;char&gt;, collate&lt;wchar_t&gt;<br />
1523 T     ctype&lt;char&gt;, ctype&lt;wchar_t&gt;<br />
1524 T     codecvt&lt;char,char,mbstate_t&gt;,<br />
1525 S     codecvt&lt;wchar_t,char,mbstate_t&gt;<br />
1526 T     moneypunct&lt;char&gt;, moneypunct&lt;wchar_t&gt;<br />
1527 T     moneypunct&lt;char,true&gt;, moneypunct&lt;wchar_t,true&gt;,<br />
1528 S     money_get&lt;char&gt;, money_get&lt;wchar_t<br />
1529 S     money_put&lt;char&gt;, money_put&lt;wchar_t&gt;<br />
1530 T     numpunct&lt;char&gt;, numpunct&lt;wchar_t&gt;,<br />
1531 X     num_get&lt;char&gt;, num_get&lt;wchar_t&gt;<br />
1532 X     num_put&lt;char&gt;, num_put&lt;wchar_t&gt;<br />
1533 S     time_get&lt;char&gt;, time_get&lt;wchar_t&gt;,<br />
1534 S     time_put&lt;char&gt;, time_put&lt;wchar_t&gt;<br />
1535 S     messages&lt;char&gt;, messages&lt;wchar_t&gt;<br />
1536 <br />
1537       [required instantiations]<br />
1538 S    collate_byname&lt;char&gt;, collate_byname&lt;wchar_t&gt;<br />
1539 S    ctype_byname&lt;char&gt;, ctype_byname&lt;wchar_t&gt;<br />
1540 S    codecvt_byname&lt;char,char,mbstate_t&gt;,<br />
1541 S    codecvt_byname&lt;wchar_t,char,mbstate_t&gt;<br />
1542 S    moneypunct_byname&lt;char,International&gt;,<br />
1543 S    moneypunct_byname&lt;wchar_t,International&gt;,<br />
1544 S    money_get&lt;C,InputIterator&gt;,<br />
1545 S    money_put&lt;C,OutputIterator&gt;<br />
1546 S    numpunct_byname&lt;char&gt;, numpunct_byname&lt;wchar_t&gt;<br />
1547 X    num_get&lt;C,InputIterator&gt;, num_put&lt;C,OutputIterator&gt;<br />
1548 S    time_get&lt;char,InputIterator&gt;,<br />
1549 S    time_get_byname&lt;char,InputIterator&gt;,<br />
1550 S    time_get&lt;wchar_t,OutputIterator&gt;,<br />
1551 S    time_get_byname&lt;wchar_t,OutputIterator&gt;,<br />
1552 S    time_put&lt;char,OutputIterator&gt;,<br />
1553 S    time_put_byname&lt;char,OutputIterator&gt;,<br />
1554 S    time_put&lt;wchar_t,OutputIterator&gt;<br />
1555 S    time_put_byname&lt;wchar_t,OutputIterator&gt;<br />
1556 S    messages_byname&lt;char&gt;, messages_byname&lt;wchar_t&gt;<br />
1557 <br />
1558 <br />
1559    22.1.1.1.2  Class locale::facet                     [lib.locale.facet]<br />
1560 <br />
1561 T   class locale::facet {<br />
1562     protected:<br />
1563 T     explicit facet(size_t refs = 0);<br />
1564 T     virtual ~facet();<br />
1565     private:<br />
1566 T     facet(const facet&amp;);                // not defined<br />
1567 T     void operator=(const facet&amp;);       // not defined<br />
1568     };<br />
1569    }<br />
1570 <br />
1571 <br />
1572    22.1.1.1.3  Class locale::id                           [lib.locale.id]<br />
1573 <br />
1574 T   class locale::id {<br />
1575     public:<br />
1576 T     id();<br />
1577     private:<br />
1578 T     void operator=(const id&amp;);  // not defined<br />
1579 T     id(const id&amp;);              // not defined<br />
1580     };<br />
1581    }<br />
1582 <br />
1583 <br />
1584    22.2.1  The ctype category                        [lib.category.ctype]<br />
1585 <br />
1586 T   class ctype_base {<br />
1587     public:<br />
1588 T     enum mask {         // numeric values are for exposition only.<br />
1589 T       space=, print=, cntrl=, upper=, lower=,<br />
1590 T       alpha=, digit=, punct=, xdigit=,<br />
1591 T       alnum=, graph=<br />
1592       };<br />
1593     };<br />
1594 <br />
1595 <br />
1596    22.2.1.1  Template class ctype                      [lib.locale.ctype]<br />
1597 <br />
1598 T   template &lt;class charT&gt;<br />
1599     class ctype : public locale::facet, public ctype_base {<br />
1600     public:<br />
1601 T     typedef charT char_type;<br />
1602 T     explicit ctype(size_t refs = 0);<br />
1603 T     bool         is(mask m, charT c) const;<br />
1604 T     const charT* is(const charT* low, const charT* high, mask* vec) const;<br />
1605 T     const charT* scan_is(mask m,<br />
1606                            const charT* low, const charT* high) const;<br />
1607 T     const charT* scan_not(mask m,<br />
1608                             const charT* low, const charT* high) const;<br />
1609 T     charT        toupper(charT c) const;<br />
1610 T     const charT* toupper(charT* low, const charT* high) const;<br />
1611 T     charT        tolower(charT c) const;<br />
1612 T     const charT* tolower(charT* low, const charT* high) const;<br />
1613 T     charT        widen(char c) const;<br />
1614 T     const char*  widen(const char* low, const char* high, charT* to) const;<br />
1615 T     char         narrow(charT c, char dfault) const;<br />
1616 T     const charT* narrow(const charT* low, const charT*, char dfault,<br />
1617                           char* to) const;<br />
1618 T     static locale::id id;<br />
1619 <br />
1620     protected:<br />
1621 T    ~ctype();                    // virtual<br />
1622 T     virtual bool         do_is(mask m, charT c) const;<br />
1623 T     virtual const charT* do_is(const charT* low, const charT* high,<br />
1624                                  mask* vec) const;<br />
1625 T     virtual const charT* do_scan_is(mask m,<br />
1626                               const charT* low, const charT* high) const;<br />
1627 T     virtual const charT* do_scan_not(mask m,<br />
1628                               const charT* low, const charT* high) const;<br />
1629 T     virtual charT        do_toupper(charT) const;<br />
1630 T     virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
1631 T     virtual charT        do_tolower(charT) const;<br />
1632 T     virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
1633 T     virtual charT        do_widen(char) const;<br />
1634 T     virtual const char*  do_widen(const char* low, const char* high,<br />
1635                                     charT* dest) const;<br />
1636 T     virtual char         do_narrow(charT, char dfault) const;<br />
1637 T     virtual const charT* do_narrow(const charT* low, const charT* high,<br />
1638                                      char dfault, char* dest) const;<br />
1639     };<br />
1640 <br />
1641 <br />
1642    22.2.1.2  Template class ctype_byname        [lib.locale.ctype.byname]<br />
1643 <br />
1644 X   template &lt;class charT&gt;<br />
1645     class ctype_byname : public ctype&lt;charT&gt; {<br />
1646     public:<br />
1647 T     typedef ctype&lt;charT&gt;::mask mask;<br />
1648 S     explicit ctype_byname(const char*, size_t refs = 0);<br />
1649     protected:<br />
1650 S    ~ctype_byname();             // virtual<br />
1651 S     virtual bool         do_is(mask m, charT c) const;<br />
1652 S     virtual const charT* do_is(const charT* low, const charT* high,<br />
1653                                  mask* vec) const;<br />
1654 S     virtual const char*  do_scan_is(mask m,<br />
1655                                const charT* low, const charT* high) const;<br />
1656 S     virtual const char*  do_scan_not(mask m,<br />
1657                                const charT* low, const charT* high) const;<br />
1658 S     virtual charT        do_toupper(charT) const;<br />
1659 S     virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
1660 S     virtual charT        do_tolower(charT) const;<br />
1661 S     virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
1662 S     virtual charT        do_widen(char) const;<br />
1663 S     virtual const char*  do_widen(const char* low, const char* high,<br />
1664                                     charT* dest) const;<br />
1665 S     virtual char         do_narrow(charT, char dfault) const;<br />
1666 S     virtual const charT* do_narrow(const charT* low, const charT* high,<br />
1667                                      char dfault, char* dest) const;<br />
1668     };<br />
1669 <br />
1670    22.2.1.3  ctype specializations              [lib.facet.ctype.special]<br />
1671 <br />
1672 T   template &lt;&gt; class ctype&lt;char&gt;<br />
1673       : public locale::facet, public ctype_base {<br />
1674     public:<br />
1675 T     typedef char char_type;<br />
1676 T     explicit ctype(const mask* tab = 0, bool del = false,<br />
1677                      size_t refs = 0);<br />
1678 T     bool is(mask m, char c) const;<br />
1679 T     const char* is(const char* low, const char* high, mask* vec) const;<br />
1680 T     const char* scan_is (mask m,<br />
1681                            const char* low, const char* high) const;<br />
1682 T     const char* scan_not(mask m,<br />
1683                            const char* low, const char* high) const;<br />
1684 T     char        toupper(char c) const;<br />
1685 T     const char* toupper(char* low, const char* high) const;<br />
1686 T     char        tolower(char c) const;<br />
1687 T     const char* tolower(char* low, const char* high) const;<br />
1688 T     char  widen(char c) const;<br />
1689 T     const char* widen(const char* low, const char* high, char* to) const;<br />
1690 T     char  narrow(char c, char dfault) const;<br />
1691 T     const char* narrow(const char* low, const char* high, char dfault,<br />
1692                          char* to) const;<br />
1693 T     static locale::id id;<br />
1694 T     static const size_t table_size = IMPLEMENTATION_DEFINED;<br />
1695 <br />
1696     protected:<br />
1697 T     const mask* table() const throw();<br />
1698 T     static const mask* classic_table() throw();<br />
1699 T    ~ctype();                    // virtual<br />
1700 T     virtual char        do_toupper(char c) const;<br />
1701 T     virtual const char* do_toupper(char* low, const char* high) const;<br />
1702 T     virtual char        do_tolower(char c) const;<br />
1703 T     virtual const char* do_tolower(char* low, const char* high) const;<br />
1704 <br />
1705 T     virtual char        do_widen(char c) const;<br />
1706 T     virtual const char* do_widen(const char* low,<br />
1707                                    const char* high,<br />
1708                                    char* to) const;<br />
1709 T     virtual char        do_narrow(char c, char dfault) const;<br />
1710 T     virtual const char* do_narrow(const char* low,<br />
1711                                     const char* high,<br />
1712                                     char dfault, char* to) const;<br />
1713     };<br />
1714 <br />
1715 <br />
1716    22.2.1.4  Class                      [lib.locale.ctype.byname.special]<br />
1717        ctype_byname&lt;char&gt;<br />
1718 <br />
1719 X   template &lt;&gt; class ctype_byname&lt;char&gt; : public ctype&lt;char&gt; {<br />
1720     public:<br />
1721 S     explicit ctype_byname(const char*, size_t refs = 0);<br />
1722     protected:<br />
1723 S    ~ctype_byname();             // virtual<br />
1724 S     virtual char        do_toupper(char c) const;<br />
1725 S     virtual const char* do_toupper(char* low, const char* high) const;<br />
1726 S     virtual char        do_tolower(char c) const;<br />
1727 S     virtual const char* do_tolower(char* low, const char* high) const;<br />
1728 <br />
1729 S     virtual char        do_widen(char c) const;<br />
1730 S     virtual const char* do_widen(char* low,<br />
1731                                    const char* high,<br />
1732                                    char* to) const;<br />
1733 S     virtual char        do_widen(char c) const;<br />
1734 S     virtual const char* do_widen(char* low, const char* high) const;<br />
1735 <br />
1736     };<br />
1737 <br />
1738 <br />
1739 <br />
1740    22.2.1.5  Template class codecvt                  [lib.locale.codecvt]<br />
1741 <br />
1742 T  class codecvt_base {<br />
1743    public:<br />
1744 T   enum result { ok, partial, error, noconv };<br />
1745    };<br />
1746 <br />
1747 T  template &lt;class internT, class externT, class stateT&gt;<br />
1748    class codecvt : public locale::facet, public codecvt_base {<br />
1749    public:<br />
1750 T   typedef internT  intern_type;<br />
1751 T   typedef externT  extern_type;<br />
1752 T   typedef stateT state_type;<br />
1753 T   explicit codecvt(size_t refs = 0)<br />
1754 T   result out(stateT&amp; state,<br />
1755      const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
1756            externT*   to,       externT* to_limit, externT*&amp; to_next) const;<br />
1757 T   result unshift(stateT&amp; state,<br />
1758            externT*   to,        externT* to_limit, externT*&amp; to_next) const;<br />
1759 T   result in(stateT&amp; state,<br />
1760      const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
1761            internT*   to,       internT* to_limit, internT*&amp; to_next) const;<br />
1762 T   int encoding() const throw();<br />
1763 T   bool always_noconv() const throw();<br />
1764 T   int length(const stateT&amp;, const externT* from, const externT* end,<br />
1765                size_t max) const;<br />
1766 T   int max_length() const throw();<br />
1767 T   static locale::id id;<br />
1768 <br />
1769    protected:<br />
1770 T   ~codecvt();                   // virtual<br />
1771 T   virtual result do_out(stateT&amp; state,<br />
1772      const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
1773            externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
1774 T   virtual result do_in(stateT&amp; state,<br />
1775 T    const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
1776            internT* to,         internT* to_limit, internT*&amp; to_next) const;<br />
1777 T   virtual result do_unshift(stateT&amp; state,<br />
1778            externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
1779 T   virtual int do_encoding() const throw();<br />
1780 T   virtual bool do_always_noconv() const throw();<br />
1781 T   virtual int do_length(const stateT&amp;, const externT* from,<br />
1782                           const externT* end, size_t max) const;<br />
1783 T   virtual int do_max_length() const throw();<br />
1784    };<br />
1785    }<br />
1786 <br />
1787 <br />
1788    22.2.1.6  Template class                   [lib.locale.codecvt.byname]<br />
1789        codecvt_byname<br />
1790 <br />
1791 X  template &lt;class internT, class externT, class stateT&gt;<br />
1792    class codecvt_byname : public codecvt&lt;internT, externT, stateT&gt; {<br />
1793    public:<br />
1794 S   explicit codecvt_byname(const char*, size_t refs = 0);<br />
1795    protected:<br />
1796 S  ~codecvt_byname();             // virtual<br />
1797 S   virtual result do_out(stateT&amp; state,<br />
1798       const internT* from, const internT* from_end, const internT*&amp; from_next,<br />
1799             externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
1800 S   virtual result do_in(stateT&amp; state,<br />
1801       const externT* from, const externT* from_end, const externT*&amp; from_next,<br />
1802             internT* to,         internT* to_limit, internT*&amp; to_next) const;<br />
1803 S   virtual result do_unshift(stateT&amp; state,<br />
1804             externT* to,         externT* to_limit, externT*&amp; to_next) const;<br />
1805 S   virtual int do_encoding() const throw();<br />
1806 S   virtual bool do_always_noconv() const throw();<br />
1807 S   virtual int do_length(const stateT&amp;, const externT* from,<br />
1808                           const externT* end, size_t max) const;<br />
1809 S   virtual result do_unshift(stateT&amp; state,<br />
1810            externT* to, externT* to_limit, externT*&amp; to_next) const;<br />
1811 S   virtual int do_max_length() const throw();<br />
1812     };<br />
1813 <br />
1814 <br />
1815    22.2.2.1  Template class num_get                  [lib.locale.num.get]<br />
1816 <br />
1817 X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
1818     class num_get : public locale::facet {<br />
1819     public:<br />
1820 T     typedef charT            char_type;<br />
1821 T     typedef InputIterator    iter_type;<br />
1822 T     explicit num_get(size_t refs = 0);<br />
1823 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1824                     ios_base::iostate&amp; err, bool&amp; v)           const;<br />
1825 T     iter_type get(iter_type in, iter_type end, ios_base&amp; ,<br />
1826                     ios_base::iostate&amp; err, long&amp; v)           const;<br />
1827 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1828                     ios_base::iostate&amp; err, unsigned short&amp; v) const;<br />
1829 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1830                     ios_base::iostate&amp; err, unsigned int&amp; v)   const;<br />
1831 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1832                     ios_base::iostate&amp; err, unsigned long&amp; v)  const;<br />
1833 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1834                     ios_base::iostate&amp; err, float&amp; v)          const;<br />
1835 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1836                     ios_base::iostate&amp; err, double&amp; v)         const;<br />
1837 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1838                     ios_base::iostate&amp; err, long double&amp; v)    const;<br />
1839 T     iter_type get(iter_type in, iter_type end, ios_base&amp;,<br />
1840                     ios_base::iostate&amp; err, void*&amp; v)          const;<br />
1841 T     static locale::id id;<br />
1842 <br />
1843     protected:<br />
1844 T    ~num_get();                  // virtual<br />
1845 T     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1846           ios_base::iostate&amp; err, bool&amp; v) const;<br />
1847 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1848           ios_base::iostate&amp; err, long&amp; v) const;<br />
1849 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1850           ios_base::iostate&amp; err, unsigned short&amp; v) const;<br />
1851 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1852           ios_base::iostate&amp; err, unsigned int&amp; v) const;<br />
1853 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1854           ios_base::iostate&amp; err, unsigned long&amp; v) const;<br />
1855 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1856           ios_base::iostate&amp; err, float&amp; v) const;<br />
1857 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1858           ios_base::iostate&amp; err, double&amp; v) const;<br />
1859 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1860           ios_base::iostate&amp; err, long double&amp; v) const;<br />
1861 S     virtual iter_type do_get(iter_type, iter_type, ios_base&amp;,<br />
1862           ios_base::iostate&amp; err, void*&amp; v) const;<br />
1863     };<br />
1864 <br />
1865 <br />
1866 <br />
1867    22.2.2.2  Template class num_put                   [lib.locale.nm.put]<br />
1868 <br />
1869 X   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
1870     class num_put : public locale::facet {<br />
1871     public:<br />
1872 T     typedef charT            char_type;<br />
1873 T     typedef OutputIterator   iter_type;<br />
1874 T     explicit num_put(size_t refs = 0);<br />
1875 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill, bool v) const;<br />
1876 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill, long v) const;<br />
1877 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
1878                     unsigned long v) const;<br />
1879 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
1880                     double v) const;<br />
1881 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
1882                     long double v) const;<br />
1883 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
1884                     const void* v) const;<br />
1885 T     static locale::id id;<br />
1886     protected:<br />
1887 T    ~num_put();                  // virtual<br />
1888 T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
1889                                bool v) const;<br />
1890 T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
1891                                long v) const;<br />
1892 T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
1893                                unsigned long) const;<br />
1894 S     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
1895                                double v) const;<br />
1896 S     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
1897                                long double v) const;<br />
1898 T     virtual iter_type do_put(iter_type, ios_base&amp;, char_type fill,<br />
1899                                const void* v) const;<br />
1900     };<br />
1901    }<br />
1902 <br />
1903    22.2.3.1  Template class numpunct                [lib.locale.numpunct]<br />
1904 <br />
1905 T   template &lt;class charT&gt;<br />
1906     class numpunct : public locale::facet {<br />
1907     public:<br />
1908 T     typedef charT               char_type;<br />
1909 T     typedef basic_string&lt;charT&gt; string_type;<br />
1910 T     explicit numpunct(size_t refs = 0);<br />
1911 T     char_type    decimal_point()   const;<br />
1912 T     char_type    thousands_sep()   const;<br />
1913 T     string       grouping()        const;<br />
1914 T     string_type  truename()        const;<br />
1915 T     string_type  falsename()       const;<br />
1916 T     static locale::id id;<br />
1917     protected:<br />
1918 T    ~numpunct();                 // virtual<br />
1919 T     virtual char_type    do_decimal_point() const;<br />
1920 T     virtual char_type    do_thousands_sep() const;<br />
1921 T     virtual string       do_grouping()      const;<br />
1922 T     virtual string_type  do_truename()      const;      // for bool<br />
1923 T     virtual string_type  do_falsename()     const;      // for bool<br />
1924     };<br />
1925    }<br />
1926 <br />
1927 <br />
1928 <br />
1929    22.2.3.2  Template class                  [lib.locale.numpunct.byname]<br />
1930        numpunct_byname<br />
1931 <br />
1932 X   template &lt;class charT&gt;<br />
1933     class numpunct_byname : public numpunct&lt;charT&gt; {<br />
1934    // this class is specialized for char and wchar_t.<br />
1935     public:<br />
1936 T     typedef charT                char_type;<br />
1937 T     typedef basic_string&lt;charT&gt;  string_type;<br />
1938 S     explicit numpunct_byname(const char*, size_t refs = 0);<br />
1939     protected:<br />
1940 S    ~numpunct_byname();          // virtual<br />
1941 S     virtual char_type    do_decimal_point() const;<br />
1942 S     virtual char_type    do_thousands_sep() const;<br />
1943 S     virtual string       do_grouping()      const;<br />
1944 S     virtual string_type  do_truename()      const;      // for bool<br />
1945 S     virtual string_type  do_falsename()     const;      // for bool<br />
1946     };<br />
1947 <br />
1948 <br />
1949    22.2.4.1  Template class collate                  [lib.locale.collate]<br />
1950 <br />
1951 T   template &lt;class charT&gt;<br />
1952     class collate : public locale::facet {<br />
1953     public:<br />
1954 T     typedef charT               char_type;<br />
1955 T     typedef basic_string&lt;charT&gt; string_type;<br />
1956 T     explicit collate(size_t refs = 0);<br />
1957 T     int compare(const charT* low1, const charT* high1,<br />
1958                   const charT* low2, const charT* high2) const;<br />
1959 T     string_type transform(const charT* low, const charT* high) const;<br />
1960 T     long hash(const charT* low, const charT* high) const;<br />
1961 T     static locale::id id;<br />
1962     protected:<br />
1963 T    ~collate();                  // virtual<br />
1964 T     virtual int    do_compare(const charT* low1, const charT* high1,<br />
1965                                 const charT* low2, const charT* high2) const;<br />
1966 T     virtual string_type do_transform<br />
1967                                (const charT* low, const charT* high) const;<br />
1968 T     virtual long   do_hash   (const charT* low, const charT* high) const;<br />
1969     };<br />
1970 <br />
1971 <br />
1972    22.2.4.2  Template class                   [lib.locale.collate.byname]<br />
1973        collate_byname<br />
1974 <br />
1975 X   template &lt;class charT&gt;<br />
1976     class collate_byname : public collate&lt;charT&gt; {<br />
1977     public:<br />
1978 T     typedef basic_string&lt;charT&gt; string_type;<br />
1979 T     explicit collate_byname(const char*, size_t refs = 0);<br />
1980     protected:<br />
1981 S    ~collate_byname();           // virtual<br />
1982 S     virtual int    do_compare(const charT* low1, const charT* high1,<br />
1983                                 const charT* low2, const charT* high2) const;<br />
1984 S     virtual string_type do_transform<br />
1985                                (const charT* low, const charT* high) const;<br />
1986 S     virtual long   do_hash   (const charT* low, const charT* high) const;<br />
1987     };<br />
1988 <br />
1989 <br />
1990    22.2.5.1  Template class time_get                [lib.locale.time.get]<br />
1991 <br />
1992 T   class time_base {<br />
1993     public:<br />
1994 T     enum dateorder { no_order, dmy, mdy, ymd, ydm };<br />
1995     };<br />
1996 <br />
1997     [Note: semantics of time_get members are implementation-defined.<br />
1998      To complete implementation requires documenting behavior.]<br />
1999 <br />
2000 X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
2001     class time_get : public locale::facet, public time_base {<br />
2002     public:<br />
2003 T     typedef charT            char_type;<br />
2004 T     typedef InputIterator    iter_type;<br />
2005 T     explicit time_get(size_t refs = 0);<br />
2006 <br />
2007 T     dateorder date_order()  const { return do_date_order(); }<br />
2008 T     iter_type get_time(iter_type s, iter_type end, ios_base&amp; f,<br />
2009                          ios_base::iostate&amp; err, tm* t)  const;<br />
2010 T     iter_type get_date(iter_type s, iter_type end, ios_base&amp; f,<br />
2011                          ios_base::iostate&amp; err, tm* t)  const;<br />
2012 T     iter_type get_weekday(iter_type s, iter_type end, ios_base&amp; f,<br />
2013                             ios_base::iostate&amp; err, tm* t) const;<br />
2014 T     iter_type get_monthname(iter_type s, iter_type end, ios_base&amp; f,<br />
2015                               ios_base::iostate&amp; err, tm* t) const;<br />
2016 T     iter_type get_year(iter_type s, iter_type end, ios_base&amp; f,<br />
2017                          ios_base::iostate&amp; err, tm* t) const;<br />
2018 T     static locale::id id;<br />
2019     protected:<br />
2020      ~time_get();                 // virtual<br />
2021 X     virtual dateorder do_date_order()  const;<br />
2022 S     virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,<br />
2023                                     ios_base::iostate&amp; err, tm* t) const;<br />
2024 S     virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,<br />
2025                                     ios_base::iostate&amp; err, tm* t) const;<br />
2026 S     virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,<br />
2027                                        ios_base::iostate&amp; err, tm* t) const;<br />
2028 S     virtual iter_type do_get_monthname(iter_type s, ios_base&amp;,<br />
2029                                          ios_base::iostate&amp; err, tm* t) const;<br />
2030 S     virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,<br />
2031                                     ios_base::iostate&amp; err, tm* t) const;<br />
2032     };<br />
2033 <br />
2034 <br />
2035 <br />
2036    22.2.5.2  Template class                  [lib.locale.time.get.byname]<br />
2037        time_get_byname<br />
2038 <br />
2039 X   template &lt;class charT, class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
2040     class time_get_byname : public time_get&lt;charT, InputIterator&gt; {<br />
2041     public:<br />
2042 T     typedef time_base::dateorder dateorder;<br />
2043 T     typedef InputIterator        iter_type<br />
2044 <br />
2045 S     explicit time_get_byname(const char*, size_t refs = 0);<br />
2046     protected:<br />
2047 S    ~time_get_byname();          // virtual<br />
2048 S     virtual dateorder do_date_order()  const;<br />
2049 S     virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&amp;,<br />
2050                                     ios_base::iostate&amp; err, tm* t) const;<br />
2051 S     virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&amp;,<br />
2052                                     ios_base::iostate&amp; err, tm* t) const;<br />
2053 T     virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&amp;,<br />
2054                                        ios_base::iostate&amp; err, tm* t) const;<br />
2055 T     virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&amp;,<br />
2056                                          ios_base::iostate&amp; err, tm* t) const;<br />
2057 S     virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&amp;,<br />
2058                                     ios_base::iostate&amp; err, tm* t) const;<br />
2059     };<br />
2060    }<br />
2061 <br />
2062    22.2.5.3  Template class time_put                [lib.locale.time.put]<br />
2063 <br />
2064 X   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
2065     class time_put : public locale::facet {<br />
2066     public:<br />
2067 T     typedef charT            char_type;<br />
2068 T     typedef OutputIterator   iter_type;<br />
2069 T     explicit time_put(size_t refs = 0);<br />
2070       // the following is implemented in terms of other member functions.<br />
2071 S     iter_type put(iter_type s, ios_base&amp; f, char_type fill, const tm* tmb,<br />
2072                     const charT* pattern, const charT* pat_end) const;<br />
2073 T     iter_type put(iter_type s, ios_base&amp; f, char_type fill,<br />
2074                     const tm* tmb, char format, char modifier = 0) const;<br />
2075 T     static locale::id id;<br />
2076     protected:<br />
2077 T    ~time_put();                 // virtual<br />
2078 S     virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,<br />
2079                                char format, char modifier) const;<br />
2080     };<br />
2081 <br />
2082 <br />
2083 <br />
2084    22.2.5.4  Template class                  [lib.locale.time.put.byname]<br />
2085        time_put_byname<br />
2086 <br />
2087 T   template &lt;class charT, class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
2088     class time_put_byname : public time_put&lt;charT, OutputIterator&gt;<br />
2089     {<br />
2090     public:<br />
2091 T     typedef charT          char_type;<br />
2092 T     typedef OutputIterator iter_type;<br />
2093 <br />
2094 T     explicit time_put_byname(const char*, size_t refs = 0);<br />
2095     protected:<br />
2096 T    ~time_put_byname();          // virtual<br />
2097 S     virtual iter_type do_put(iter_type s, ios_base&amp;, char_type, const tm* t,<br />
2098                                char format, char modifier) const;<br />
2099     };<br />
2100 <br />
2101 <br />
2102    22.2.6.1  Template class money_get              [lib.locale.money.get]<br />
2103 <br />
2104 X   template &lt;class charT,<br />
2105               class InputIterator = istreambuf_iterator&lt;charT&gt; &gt;<br />
2106     class money_get : public locale::facet {<br />
2107     public:<br />
2108 T     typedef charT               char_type;<br />
2109 T     typedef InputIterator       iter_type;<br />
2110 T     typedef basic_string&lt;charT&gt; string_type;<br />
2111 T     explicit money_get(size_t refs = 0);<br />
2112 T     iter_type get(iter_type s, iter_type end, bool intl,<br />
2113                     ios_base&amp; f, ios_base::iostate&amp; err,<br />
2114                     long double&amp; units) const;<br />
2115 T     iter_type get(iter_type s, iter_type end, bool intl,<br />
2116                     ios_base&amp; f, ios_base::iostate&amp; err,<br />
2117                     string_type&amp; digits) const;<br />
2118 T     static locale::id id;<br />
2119     protected:<br />
2120 T    ~money_get();                // virtual<br />
2121 S     virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,<br />
2122                        ios_base::iostate&amp; err, long double&amp; units) const;<br />
2123 S     virtual iter_type do_get(iter_type, iter_type, bool, ios_base&amp;,<br />
2124                        ios_base::iostate&amp; err, string_type&amp; digits) const;<br />
2125     };<br />
2126 <br />
2127    22.2.6.2  Template class money_put              [lib.locale.money.put]<br />
2128 <br />
2129 X   template &lt;class charT,<br />
2130               class OutputIterator = ostreambuf_iterator&lt;charT&gt; &gt;<br />
2131     class money_put : public locale::facet {<br />
2132     public:<br />
2133 T     typedef charT               char_type;<br />
2134 T     typedef OutputIterator      iter_type;<br />
2135 T     typedef basic_string&lt;charT&gt; string_type;<br />
2136 T     explicit money_put(size_t refs = 0);<br />
2137 T     iter_type put(iter_type s, bool intl, ios_base&amp; f,<br />
2138                     char_type fill, long double units) const;<br />
2139 T     iter_type put(iter_type s, bool intl, ios_base&amp; f,<br />
2140                     char_type fill, const string_type&amp; digits) const;<br />
2141 T     static locale::id id;<br />
2142 <br />
2143     protected:<br />
2144 T    ~money_put();                // virtual<br />
2145 S     virtual iter_type<br />
2146         do_put(iter_type, bool, ios_base&amp;, char_type fill,<br />
2147                long double units) const;<br />
2148 S     virtual iter_type<br />
2149         do_put(iter_type, bool, ios_base&amp;, char_type fill,<br />
2150                const string_type&amp; digits) const;<br />
2151     };<br />
2152 <br />
2153 <br />
2154    22.2.6.3  Template class moneypunct            [lib.locale.moneypunct]<br />
2155 <br />
2156 T   class money_base {<br />
2157     public:<br />
2158 T     enum part { none, space, symbol, sign, value };<br />
2159 T     struct pattern { char field[4]; };<br />
2160     };<br />
2161 <br />
2162 X   template &lt;class charT, bool International = false&gt;<br />
2163     class moneypunct : public locale::facet, public money_base {<br />
2164     public:<br />
2165 T     typedef charT char_type;<br />
2166 T     typedef basic_string&lt;charT&gt; string_type;<br />
2167 T     explicit moneypunct(size_t refs = 0);<br />
2168 T     charT        decimal_point() const;<br />
2169 T     charT        thousands_sep() const;<br />
2170 T     string       grouping()      const;<br />
2171 T     string_type  curr_symbol()   const;<br />
2172 T     string_type  positive_sign() const;<br />
2173 T     string_type  negative_sign() const;<br />
2174 T     int          frac_digits()   const;<br />
2175 T     pattern      pos_format()    const;<br />
2176 T     pattern      neg_format()    const;<br />
2177 T     static locale::id id;<br />
2178 T     static const bool intl = International;<br />
2179     protected:<br />
2180 T    ~moneypunct();               // virtual<br />
2181 S     virtual charT        do_decimal_point() const;<br />
2182 S     virtual charT        do_thousands_sep() const;<br />
2183 S     virtual string       do_grouping()      const;<br />
2184 S     virtual string_type  do_curr_symbol()   const;<br />
2185 S     virtual string_type  do_positive_sign() const;<br />
2186 S     virtual string_type  do_negative_sign() const;<br />
2187 S     virtual int          do_frac_digits()   const;<br />
2188 T     virtual pattern      do_pos_format()    const;<br />
2189 T     virtual pattern      do_neg_format()    const;<br />
2190     };<br />
2191    }<br />
2192 <br />
2193    22.2.6.4  Template class                [lib.locale.moneypunct.byname]<br />
2194        moneypunct_byname<br />
2195 <br />
2196 X   template &lt;class charT, bool Intl = false&gt;<br />
2197     class moneypunct_byname : public moneypunct&lt;charT, Intl&gt; {<br />
2198     public:<br />
2199 T     typedef money_base::pattern pattern;<br />
2200 T     typedef basic_string&lt;charT&gt; string_type;<br />
2201 <br />
2202 T     explicit moneypunct_byname(const char*, size_t refs = 0);<br />
2203     protected:<br />
2204 T    ~moneypunct_byname();        // virtual<br />
2205 S     virtual charT        do_decimal_point() const;<br />
2206 S     virtual charT        do_thousands_sep() const;<br />
2207 S     virtual string       do_grouping()      const;<br />
2208 S     virtual string_type  do_curr_symbol()   const;<br />
2209 S     virtual string_type  do_positive_sign() const;<br />
2210 S     virtual string_type  do_negative_sign() const;<br />
2211 S     virtual int          do_frac_digits()   const;<br />
2212 S     virtual pattern      do_pos_format()    const;<br />
2213 S     virtual pattern      do_neg_format()    const;<br />
2214     };<br />
2215 <br />
2216    22.2.7.1  Template class messages                [lib.locale.messages]<br />
2217 <br />
2218 T   class messages_base {<br />
2219     public:<br />
2220 T     typedef int catalog;<br />
2221     };<br />
2222 <br />
2223 X   template &lt;class charT&gt;<br />
2224     class messages : public locale::facet, public messages_base {<br />
2225     public:<br />
2226 T     typedef charT char_type;<br />
2227 T     typedef basic_string&lt;charT&gt; string_type;<br />
2228 T     explicit messages(size_t refs = 0);<br />
2229 T     catalog open(const basic_string&lt;char&gt;&amp; fn, const locale&amp;) const;<br />
2230 T     string_type  get(catalog c, int set, int msgid,<br />
2231                        const string_type&amp; dfault) const;<br />
2232 T     void    close(catalog c) const;<br />
2233 T     static locale::id id;<br />
2234     protected:<br />
2235 T    ~messages();                 // virtual<br />
2236 S     virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;<br />
2237 S     virtual string_type  do_get(catalog, int set, int msgid,<br />
2238                              const string_type&amp; dfault) const;<br />
2239 S     virtual void    do_close(catalog) const;<br />
2240     };<br />
2241 <br />
2242    22.2.7.2  Template class                  [lib.locale.messages.byname]<br />
2243        messages_byname<br />
2244 <br />
2245 <br />
2246 X   template &lt;class charT&gt;<br />
2247     class messages_byname : public messages&lt;charT&gt; {<br />
2248     public:<br />
2249 T     typedef messages_base::catalog catalog;<br />
2250 T     typedef basic_string&lt;charT&gt;    string_type;<br />
2251 <br />
2252 T     explicit messages_byname(const char*, size_t refs = 0);<br />
2253     protected:<br />
2254 T    ~messages_byname();          // virtual<br />
2255 S     virtual catalog do_open(const basic_string&lt;char&gt;&amp;, const locale&amp;) const;<br />
2256 S     virtual string_type  do_get(catalog, int set, int msgid,<br />
2257                              const string_type&amp; dfault) const;<br />
2258 S     virtual void    do_close(catalog) const;<br />
2259     };<br />
2260 <br />
2261 <br />
2262    22.3  C Library Locales                                [lib.c.locales]<br />
2263 <br />
2264 <br />
2265                    Table 13--Header &lt;clocale&gt; synopsis<br />
2266             Macros:<br />
2267 X                        LC_ALL        LC_COLLATE   LC_CTYPE<br />
2268 X                        LC_MONETARY   LC_NUMERIC   LC_TIME<br />
2269 X                        NULL<br />
2270 X           Struct:      lconv<br />
2271 X           Functions:   localeconv    setlocale<br />
2272 <br />
2273 <br />
2274    23.2  Sequences                                        [lib.sequences]<br />
2275 <br />
2276    &lt;deque&gt;, &lt;list&gt;, &lt;queue&gt;, &lt;stack&gt;, and &lt;vector&gt;.<br />
2277 <br />
2278    Header &lt;deque&gt; synopsis<br />
2279 <br />
2280 T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class deque;<br />
2281 T   template &lt;class T, class Allocator&gt;<br />
2282       bool operator==(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
2283 T   template &lt;class T, class Allocator&gt;<br />
2284       bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
2285 T   template &lt;class T, class Allocator&gt;<br />
2286       bool operator!=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
2287 T   template &lt;class T, class Allocator&gt;<br />
2288       bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
2289 T   template &lt;class T, class Allocator&gt;<br />
2290       bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
2291 T   template &lt;class T, class Allocator&gt;<br />
2292       bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x, const deque&lt;T,Allocator&gt;&amp; y);<br />
2293 T   template &lt;class T, class Allocator&gt;<br />
2294       void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);<br />
2295    }<br />
2296 <br />
2297    Header &lt;list&gt; synopsis<br />
2298 <br />
2299 T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class list;<br />
2300 T   template &lt;class T, class Allocator&gt;<br />
2301       bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2302 T   template &lt;class T, class Allocator&gt;<br />
2303       bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2304 T   template &lt;class T, class Allocator&gt;<br />
2305       bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2306 T   template &lt;class T, class Allocator&gt;<br />
2307       bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2308 T   template &lt;class T, class Allocator&gt;<br />
2309       bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2310 T   template &lt;class T, class Allocator&gt;<br />
2311       bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2312 T   template &lt;class T, class Allocator&gt;<br />
2313       void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);<br />
2314    }<br />
2315 <br />
2316    Header &lt;queue&gt; synopsis<br />
2317 <br />
2318    namespace std {<br />
2319 T   template &lt;class T, class Container = deque&lt;T&gt; &gt; class queue;<br />
2320 T   template &lt;class T, class Container&gt;<br />
2321       bool operator==(const queue&lt;T, Container&gt;&amp; x,<br />
2322                       const queue&lt;T, Container&gt;&amp; y);<br />
2323 T   template &lt;class T, class Container&gt;<br />
2324       bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,<br />
2325                       const queue&lt;T, Container&gt;&amp; y);<br />
2326 T   template &lt;class T, class Container&gt;<br />
2327       bool operator!=(const queue&lt;T, Container&gt;&amp; x,<br />
2328                       const queue&lt;T, Container&gt;&amp; y);<br />
2329 T   template &lt;class T, class Container&gt;<br />
2330       bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,<br />
2331                       const queue&lt;T, Container&gt;&amp; y);<br />
2332 T   template &lt;class T, class Container&gt;<br />
2333       bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,<br />
2334                       const queue&lt;T, Container&gt;&amp; y);<br />
2335 T   template &lt;class T, class Container&gt;<br />
2336       bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,<br />
2337                       const queue&lt;T, Container&gt;&amp; y);<br />
2338 T   template &lt;class T, class Container = vector&lt;T&gt;,<br />
2339               class Compare = less&lt;typename Container::value_type&gt; &gt;<br />
2340 T   class priority_queue;<br />
2341    }<br />
2342 <br />
2343    Header &lt;stack&gt; synopsis<br />
2344 <br />
2345    namespace std {<br />
2346 T   template &lt;class T, class Container = deque&lt;T&gt; &gt; class stack;<br />
2347 T   template &lt;class T, class Container&gt;<br />
2348       bool operator==(const stack&lt;T, Container&gt;&amp; x,<br />
2349                       const stack&lt;T, Container&gt;&amp; y);<br />
2350 T   template &lt;class T, class Container&gt;<br />
2351       bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,<br />
2352                       const stack&lt;T, Container&gt;&amp; y);<br />
2353 T   template &lt;class T, class Container&gt;<br />
2354       bool operator!=(const stack&lt;T, Container&gt;&amp; x,<br />
2355                       const stack&lt;T, Container&gt;&amp; y);<br />
2356 T   template &lt;class T, class Container&gt;<br />
2357       bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,<br />
2358                       const stack&lt;T, Container&gt;&amp; y);<br />
2359 T   template &lt;class T, class Container&gt;<br />
2360       bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,<br />
2361                       const stack&lt;T, Container&gt;&amp; y);<br />
2362 T   template &lt;class T, class Container&gt;<br />
2363       bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,<br />
2364                       const stack&lt;T, Container&gt;&amp; y);<br />
2365    }<br />
2366 <br />
2367    Header &lt;vector&gt; synopsis<br />
2368 <br />
2369 T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class vector;<br />
2370 <br />
2371 T   template &lt;class T, class Allocator&gt;<br />
2372       bool operator==(const vector&lt;T,Allocator&gt;&amp; x,<br />
2373                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2374 T   template &lt;class T, class Allocator&gt;<br />
2375       bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
2376                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2377 T   template &lt;class T, class Allocator&gt;<br />
2378       bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,<br />
2379                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2380 T   template &lt;class T, class Allocator&gt;<br />
2381       bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
2382                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2383 T   template &lt;class T, class Allocator&gt;<br />
2384       bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
2385                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2386 T   template &lt;class T, class Allocator&gt;<br />
2387       bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
2388                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2389 T   template &lt;class T, class Allocator&gt;<br />
2390       void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);<br />
2391 <br />
2392 T   template &lt;class Allocator&gt; class vector&lt;bool,Allocator&gt;;<br />
2393 T   template &lt;class Allocator&gt;<br />
2394       bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2395                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2396 T   template &lt;class Allocator&gt;<br />
2397       bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
2398                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2399 T   template &lt;class Allocator&gt;<br />
2400       bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2401                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2402 T   template &lt;class Allocator&gt;<br />
2403       bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
2404                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2405 T   template &lt;class Allocator&gt;<br />
2406       bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2407                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2408 T   template &lt;class Allocator&gt;<br />
2409       bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2410                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2411 T   template &lt;class Allocator&gt;<br />
2412       void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);<br />
2413    }<br />
2414 <br />
2415    23.2.1  Template class deque                               [lib.deque]<br />
2416 <br />
2417     template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
2418 T   class deque {<br />
2419     public:<br />
2420       // types:<br />
2421 T     typedef typename Allocator::reference         reference;<br />
2422 T     typedef typename Allocator::const_reference   const_reference;<br />
2423 T     typedef implementation defined                iterator;<br />
2424 T     typedef implementation defined                const_iterator;<br />
2425 T     typedef implementation defined                size_type;<br />
2426 T     typedef implementation defined                difference_type;<br />
2427 T     typedef T                                     value_type;<br />
2428 T     typedef Allocator                             allocator_type;<br />
2429 T     typedef typename Allocator::pointer           pointer;<br />
2430 T     typedef typename Allocator::const_pointer     const_pointer;<br />
2431 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
2432 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
2433       // _lib.deque.cons_ construct/copy/destroy:<br />
2434 T     explicit deque(const Allocator&amp; = Allocator());<br />
2435 T     explicit deque(size_type n, const T&amp; value = T(),<br />
2436           const Allocator&amp; = Allocator());<br />
2437 T     template &lt;class InputIterator&gt;<br />
2438         deque(InputIterator first, InputIterator last,<br />
2439               const Allocator&amp; = Allocator());<br />
2440 T     deque(const deque&lt;T,Allocator&gt;&amp; x);<br />
2441 T    ~deque();<br />
2442 T     deque&lt;T,Allocator&gt;&amp; operator=(const deque&lt;T,Allocator&gt;&amp; x);<br />
2443 T     template &lt;class InputIterator&gt;<br />
2444         void assign(InputIterator first, InputIterator last);<br />
2445 T     void assign(size_type n, const T&amp; t);<br />
2446 T     allocator_type get_allocator() const;<br />
2447       // iterators:<br />
2448 T     iterator               begin();<br />
2449 T     const_iterator         begin() const;<br />
2450 T     iterator               end();<br />
2451 T     const_iterator         end() const;<br />
2452 T     reverse_iterator       rbegin();<br />
2453 T     const_reverse_iterator rbegin() const;<br />
2454 T     reverse_iterator       rend();<br />
2455 T     const_reverse_iterator rend() const;<br />
2456       // _lib.deque.capacity_ capacity:<br />
2457 T     size_type size() const;<br />
2458 T     size_type max_size() const;<br />
2459 T     void      resize(size_type sz, T c = T());<br />
2460 T     bool      empty() const;<br />
2461 <br />
2462       // element access:<br />
2463 T     reference       operator[](size_type n);<br />
2464 T     const_reference operator[](size_type n) const;<br />
2465 T     reference       at(size_type n);<br />
2466 T     const_reference at(size_type n) const;<br />
2467 T     reference       front();<br />
2468 T     const_reference front() const;<br />
2469 T     reference       back();<br />
2470 T     const_reference back() const;<br />
2471       // _lib.deque.modifiers_ modifiers:<br />
2472 T     void push_front(const T&amp; x);<br />
2473 T     void push_back(const T&amp; x);<br />
2474 T     iterator insert(iterator position, const T&amp; x);<br />
2475 T     void     insert(iterator position, size_type n, const T&amp; x);<br />
2476 T     template &lt;class InputIterator&gt;<br />
2477         void insert (iterator position,<br />
2478                      InputIterator first, InputIterator last);<br />
2479 T     void pop_front();<br />
2480 T     void pop_back();<br />
2481 T     iterator erase(iterator position);<br />
2482 T     iterator erase(iterator first, iterator last);<br />
2483 T     void     swap(deque&lt;T,Allocator&gt;&amp;);<br />
2484 T     void     clear();<br />
2485     };<br />
2486 T   template &lt;class T, class Allocator&gt;<br />
2487       bool operator==(const deque&lt;T,Allocator&gt;&amp; x,<br />
2488                       const deque&lt;T,Allocator&gt;&amp; y);<br />
2489 T   template &lt;class T, class Allocator&gt;<br />
2490       bool operator&lt; (const deque&lt;T,Allocator&gt;&amp; x,<br />
2491                       const deque&lt;T,Allocator&gt;&amp; y);<br />
2492 T   template &lt;class T, class Allocator&gt;<br />
2493       bool operator!=(const deque&lt;T,Allocator&gt;&amp; x,<br />
2494                       const deque&lt;T,Allocator&gt;&amp; y);<br />
2495 T   template &lt;class T, class Allocator&gt;<br />
2496       bool operator&gt; (const deque&lt;T,Allocator&gt;&amp; x,<br />
2497                       const deque&lt;T,Allocator&gt;&amp; y);<br />
2498 T   template &lt;class T, class Allocator&gt;<br />
2499       bool operator&gt;=(const deque&lt;T,Allocator&gt;&amp; x,<br />
2500                       const deque&lt;T,Allocator&gt;&amp; y);<br />
2501 T   template &lt;class T, class Allocator&gt;<br />
2502       bool operator&lt;=(const deque&lt;T,Allocator&gt;&amp; x,<br />
2503                       const deque&lt;T,Allocator&gt;&amp; y);<br />
2504     // specialized algorithms:<br />
2505 T   template &lt;class T, class Allocator&gt;<br />
2506       void swap(deque&lt;T,Allocator&gt;&amp; x, deque&lt;T,Allocator&gt;&amp; y);<br />
2507 <br />
2508 <br />
2509    23.2.2  Template class list                                 [lib.list]<br />
2510 <br />
2511 T   template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
2512     class list {<br />
2513     public:<br />
2514       // types:<br />
2515 T     typedef typename Allocator::reference         reference;<br />
2516 T     typedef typename Allocator::const_reference   const_reference;<br />
2517 T     typedef implementation defined                iterator;<br />
2518 T     typedef implementation defined                const_iterator;<br />
2519 T     typedef implementation defined                size_type;<br />
2520 T     typedef implementation defined                difference_type;<br />
2521 T     typedef T                                     value_type;<br />
2522 T     typedef Allocator                             allocator_type;<br />
2523 T     typedef typename Allocator::pointer           pointer;<br />
2524 T     typedef typename Allocator::const_pointer     const_pointer;<br />
2525 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
2526 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
2527 <br />
2528       // _lib.list.cons_ construct/copy/destroy:<br />
2529 T     explicit list(const Allocator&amp; = Allocator());<br />
2530 T     explicit list(size_type n, const T&amp; value = T(),<br />
2531                     const Allocator&amp; = Allocator());<br />
2532 T     template &lt;class InputIterator&gt;<br />
2533         list(InputIterator first, InputIterator last,<br />
2534              const Allocator&amp; = Allocator());<br />
2535 T     list(const list&lt;T,Allocator&gt;&amp; x);<br />
2536 T    ~list();<br />
2537 T     list&lt;T,Allocator&gt;&amp; operator=(const list&lt;T,Allocator&gt;&amp; x);<br />
2538 T     template &lt;class InputIterator&gt;<br />
2539         void assign(InputIterator first, InputIterator last);<br />
2540 T     void assign(size_type n, const T&amp; t);<br />
2541 T     allocator_type get_allocator() const;<br />
2542       // iterators:<br />
2543 T     iterator               begin();<br />
2544 T     const_iterator         begin() const;<br />
2545 T     iterator               end();<br />
2546 T     const_iterator         end() const;<br />
2547 T     reverse_iterator       rbegin();<br />
2548 T     const_reverse_iterator rbegin() const;<br />
2549 T     reverse_iterator       rend();<br />
2550 T     const_reverse_iterator rend() const;<br />
2551       // _lib.list.capacity_ capacity:<br />
2552 T     bool      empty() const;<br />
2553 T     size_type size() const;<br />
2554 T     size_type max_size() const;<br />
2555 T     void      resize(size_type sz, T c = T());<br />
2556       // element access:<br />
2557 T     reference       front();<br />
2558 T     const_reference front() const;<br />
2559 T     reference       back();<br />
2560 T     const_reference back() const;<br />
2561       // _lib.list.modifiers_ modifiers:<br />
2562 T     void push_front(const T&amp; x);<br />
2563 T     void pop_front();<br />
2564 T     void push_back(const T&amp; x);<br />
2565 T     void pop_back();<br />
2566 T     iterator insert(iterator position, const T&amp; x);<br />
2567 T     void     insert(iterator position, size_type n, const T&amp; x);<br />
2568 T     template &lt;class InputIterator&gt;<br />
2569         void insert(iterator position, InputIterator first,<br />
2570                     InputIterator last);<br />
2571 T     iterator erase(iterator position);<br />
2572 T     iterator erase(iterator position, iterator last);<br />
2573 T     void     swap(list&lt;T,Allocator&gt;&amp;);<br />
2574 T     void     clear();<br />
2575       // _lib.list.ops_ list operations:<br />
2576 T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x);<br />
2577 T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator i);<br />
2578 T     void splice(iterator position, list&lt;T,Allocator&gt;&amp; x, iterator first,<br />
2579                   iterator last);<br />
2580 T     void remove(const T&amp; value);<br />
2581 T     template &lt;class Predicate&gt; void remove_if(Predicate pred);<br />
2582 <br />
2583 T     void unique();<br />
2584 T     template &lt;class BinaryPredicate&gt;<br />
2585         void unique(BinaryPredicate binary_pred);<br />
2586 T     void merge(list&lt;T,Allocator&gt;&amp; x);<br />
2587 T     template &lt;class Compare&gt; void merge(list&lt;T,Allocator&gt;&amp; x, Compare comp);<br />
2588         void sort();<br />
2589 T     template &lt;class Compare&gt; void sort(Compare comp);<br />
2590         void reverse();<br />
2591     };<br />
2592 T   template &lt;class T, class Allocator&gt;<br />
2593       bool operator==(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2594 T   template &lt;class T, class Allocator&gt;<br />
2595       bool operator&lt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2596 T   template &lt;class T, class Allocator&gt;<br />
2597       bool operator!=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2598 T   template &lt;class T, class Allocator&gt;<br />
2599       bool operator&gt; (const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2600 T   template &lt;class T, class Allocator&gt;<br />
2601       bool operator&gt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2602 T   template &lt;class T, class Allocator&gt;<br />
2603       bool operator&lt;=(const list&lt;T,Allocator&gt;&amp; x, const list&lt;T,Allocator&gt;&amp; y);<br />
2604     // specialized algorithms:<br />
2605 T   template &lt;class T, class Allocator&gt;<br />
2606       void swap(list&lt;T,Allocator&gt;&amp; x, list&lt;T,Allocator&gt;&amp; y);<br />
2607 <br />
2608 <br />
2609    23.2.3.1  Template class queue                             [lib.queue]<br />
2610 <br />
2611 T   template &lt;class T, class Container = deque&lt;T&gt; &gt;<br />
2612     class queue {<br />
2613     public:<br />
2614 T     typedef typename Container::value_type            value_type;<br />
2615 T     typedef typename Container::size_type             size_type;<br />
2616 T     typedef          Container                        container_type;<br />
2617     protected:<br />
2618 T     Container c;<br />
2619     public:<br />
2620 T     explicit queue(const Container&amp; = Container());<br />
2621 <br />
2622 T     bool      empty() const             { return c.empty(); }<br />
2623 T     size_type size()  const             { return c.size(); }<br />
2624 T     value_type&amp;       front()           { return c.front(); }<br />
2625 T     const value_type&amp; front() const     { return c.front(); }<br />
2626 T     value_type&amp;       back()            { return c.back(); }<br />
2627 T     const value_type&amp; back() const      { return c.back(); }<br />
2628 T     void push(const value_type&amp; x)      { c.push_back(x); }<br />
2629 T     void pop()                          { c.pop_front(); }<br />
2630     };<br />
2631 <br />
2632 T   template &lt;class T, class Container&gt;<br />
2633       bool operator==(const queue&lt;T, Container&gt;&amp; x,<br />
2634                       const queue&lt;T, Container&gt;&amp; y);<br />
2635 T   template &lt;class T, class Container&gt;<br />
2636       bool operator&lt; (const queue&lt;T, Container&gt;&amp; x,<br />
2637                       const queue&lt;T, Container&gt;&amp; y);<br />
2638 T   template &lt;class T, class Container&gt;<br />
2639       bool operator!=(const queue&lt;T, Container&gt;&amp; x,<br />
2640                       const queue&lt;T, Container&gt;&amp; y);<br />
2641 T   template &lt;class T, class Container&gt;<br />
2642       bool operator&gt; (const queue&lt;T, Container&gt;&amp; x,<br />
2643                       const queue&lt;T, Container&gt;&amp; y);<br />
2644 T   template &lt;class T, class Container&gt;<br />
2645       bool operator&gt;=(const queue&lt;T, Container&gt;&amp; x,<br />
2646                       const queue&lt;T, Container&gt;&amp; y);<br />
2647 T   template &lt;class T, class Container&gt;<br />
2648       bool operator&lt;=(const queue&lt;T, Container&gt;&amp; x,<br />
2649                       const queue&lt;T, Container&gt;&amp; y);<br />
2650 <br />
2651    23.2.3.2  Template class priority_queue           [lib.priority.queue]<br />
2652 <br />
2653 T   template &lt;class T, class Container = vector&lt;T&gt;,<br />
2654               class Compare = less&lt;typename Container::value_type&gt; &gt;<br />
2655     class priority_queue {<br />
2656     public:<br />
2657 T     typedef typename Container::value_type            value_type;<br />
2658 T     typedef typename Container::size_type             size_type;<br />
2659 T     typedef          Container                        container_type;<br />
2660     protected:<br />
2661 T     Container c;<br />
2662 T     Compare comp;<br />
2663     public:<br />
2664 T     explicit priority_queue(const Compare&amp; x = Compare(),<br />
2665                               const Container&amp; = Container());<br />
2666 T     template &lt;class InputIterator&gt;<br />
2667         priority_queue(InputIterator first, InputIterator last,<br />
2668                        const Compare&amp; x = Compare(),<br />
2669                        const Container&amp; = Container());<br />
2670 <br />
2671 T     bool      empty() const       { return c.empty(); }<br />
2672 T     size_type size()  const       { return c.size(); }<br />
2673 T     const value_type&amp; top() const { return c.front(); }<br />
2674 T     void push(const value_type&amp; x);<br />
2675 T     void pop();<br />
2676     };<br />
2677 <br />
2678    23.2.3.3  Template class stack                             [lib.stack]<br />
2679 <br />
2680 T   template &lt;class T, class Container = deque&lt;T&gt; &gt;<br />
2681     class stack {<br />
2682     public:<br />
2683 T     typedef typename Container::value_type            value_type;<br />
2684 T     typedef typename Container::size_type             size_type;<br />
2685 T     typedef          Container                        container_type;<br />
2686     protected:<br />
2687 T     Container c;<br />
2688     public:<br />
2689 T     explicit stack(const Container&amp; = Container());<br />
2690 <br />
2691 T     bool      empty() const             { return c.empty(); }<br />
2692 T     size_type size()  const             { return c.size(); }<br />
2693 T     value_type&amp;       top()             { return c.back(); }<br />
2694 T     const value_type&amp; top() const       { return c.back(); }<br />
2695 T     void push(const value_type&amp; x)      { c.push_back(x); }<br />
2696 T     void pop()                          { c.pop_back(); }<br />
2697     };<br />
2698 T   template &lt;class T, class Container&gt;<br />
2699       bool operator==(const stack&lt;T, Container&gt;&amp; x,<br />
2700                       const stack&lt;T, Container&gt;&amp; y);<br />
2701 T   template &lt;class T, class Container&gt;<br />
2702       bool operator&lt; (const stack&lt;T, Container&gt;&amp; x,<br />
2703                       const stack&lt;T, Container&gt;&amp; y);<br />
2704 T   template &lt;class T, class Container&gt;<br />
2705       bool operator!=(const stack&lt;T, Container&gt;&amp; x,<br />
2706                       const stack&lt;T, Container&gt;&amp; y);<br />
2707 T   template &lt;class T, class Container&gt;<br />
2708       bool operator&gt; (const stack&lt;T, Container&gt;&amp; x,<br />
2709                       const stack&lt;T, Container&gt;&amp; y);<br />
2710 T   template &lt;class T, class Container&gt;<br />
2711       bool operator&gt;=(const stack&lt;T, Container&gt;&amp; x,<br />
2712                       const stack&lt;T, Container&gt;&amp; y);<br />
2713 T   template &lt;class T, class Container&gt;<br />
2714       bool operator&lt;=(const stack&lt;T, Container&gt;&amp; x,<br />
2715                       const stack&lt;T, Container&gt;&amp; y);<br />
2716 <br />
2717    23.2.4  Template class vector                             [lib.vector]<br />
2718 <br />
2719     template &lt;class T, class Allocator = allocator&lt;T&gt; &gt;<br />
2720 T   class vector {<br />
2721     public:<br />
2722       // types:<br />
2723 T     typedef typename Allocator::reference         reference;<br />
2724 T     typedef typename Allocator::const_reference   const_reference;<br />
2725 T     typedef implementation defined                iterator;<br />
2726 T     typedef implementation defined                const_iterator;<br />
2727 T     typedef implementation defined                size_type;<br />
2728 T     typedef implementation defined                difference_type;<br />
2729 T     typedef T                                     value_type;<br />
2730 T     typedef Allocator                             allocator_type;<br />
2731 T     typedef typename Allocator::pointer           pointer;<br />
2732 T     typedef typename Allocator::const_pointer     const_pointer<br />
2733 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
2734 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
2735       // _lib.vector.cons_ construct/copy/destroy:<br />
2736 T     explicit vector(const Allocator&amp; = Allocator());<br />
2737 T     explicit vector(size_type n, const T&amp; value = T(),<br />
2738           const Allocator&amp; = Allocator());<br />
2739 T     template &lt;class InputIterator&gt;<br />
2740         vector(InputIterator first, InputIterator last,<br />
2741           const Allocator&amp; = Allocator());<br />
2742 T     vector(const vector&lt;T,Allocator&gt;&amp; x);<br />
2743 T    ~vector();<br />
2744 T     vector&lt;T,Allocator&gt;&amp; operator=(const vector&lt;T,Allocator&gt;&amp; x);<br />
2745 T     template &lt;class InputIterator&gt;<br />
2746         void assign(InputIterator first, InputIterator last);<br />
2747 T     void assign(size_type n, const T&amp; u);<br />
2748 T     allocator_type get_allocator() const;<br />
2749       // iterators:<br />
2750 T     iterator               begin();<br />
2751 T     const_iterator         begin() const;<br />
2752 T     iterator               end();<br />
2753 T     const_iterator         end() const;<br />
2754 T     reverse_iterator       rbegin();<br />
2755 T     const_reverse_iterator rbegin() const;<br />
2756 T     reverse_iterator       rend();<br />
2757 T     const_reverse_iterator rend() const;<br />
2758       // _lib.vector.capacity_ capacity:<br />
2759 T     size_type size() const;<br />
2760 T     size_type max_size() const;<br />
2761 T     void      resize(size_type sz, T c = T());<br />
2762 T     size_type capacity() const;<br />
2763 T     bool      empty() const;<br />
2764 T     void      reserve(size_type n);<br />
2765 <br />
2766       // element access:<br />
2767 T     reference       operator[](size_type n);<br />
2768 T     const_reference operator[](size_type n) const;<br />
2769 T     const_reference at(size_type n) const;<br />
2770 T     reference       at(size_type n);<br />
2771 T     reference       front();<br />
2772 T     const_reference front() const;<br />
2773 T     reference       back();<br />
2774 T     const_reference back() const;<br />
2775       // _lib.vector.modifiers_ modifiers:<br />
2776 T     void push_back(const T&amp; x);<br />
2777 T     void pop_back();<br />
2778 T     iterator insert(iterator position, const T&amp; x);<br />
2779 T     void     insert(iterator position, size_type n, const T&amp; x);<br />
2780 T     template &lt;class InputIterator&gt;<br />
2781           void insert(iterator position,<br />
2782                       InputIterator first, InputIterator last);<br />
2783 T     iterator erase(iterator position);<br />
2784 T     iterator erase(iterator first, iterator last);<br />
2785 T     void     swap(vector&lt;T,Allocator&gt;&amp;);<br />
2786 T     void     clear();<br />
2787     };<br />
2788 <br />
2789 T   template &lt;class T, class Allocator&gt;<br />
2790       bool operator==(const vector&lt;T,Allocator&gt;&amp; x,<br />
2791                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2792 T   template &lt;class T, class Allocator&gt;<br />
2793       bool operator&lt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
2794                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2795 T   template &lt;class T, class Allocator&gt;<br />
2796       bool operator!=(const vector&lt;T,Allocator&gt;&amp; x,<br />
2797                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2798 T   template &lt;class T, class Allocator&gt;<br />
2799       bool operator&gt; (const vector&lt;T,Allocator&gt;&amp; x,<br />
2800                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2801 T   template &lt;class T, class Allocator&gt;<br />
2802       bool operator&gt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
2803                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2804 T   template &lt;class T, class Allocator&gt;<br />
2805       bool operator&lt;=(const vector&lt;T,Allocator&gt;&amp; x,<br />
2806                       const vector&lt;T,Allocator&gt;&amp; y);<br />
2807     // specialized algorithms:<br />
2808 T   template &lt;class T, class Allocator&gt;<br />
2809       void swap(vector&lt;T,Allocator&gt;&amp; x, vector&lt;T,Allocator&gt;&amp; y);<br />
2810 <br />
2811 <br />
2812    23.2.5  Class vector&lt;bool&gt;                           [lib.vector.bool]<br />
2813 <br />
2814 T   template &lt;class Allocator&gt; class vector&lt;bool, Allocator&gt; {<br />
2815     public:<br />
2816       // types:<br />
2817 T     typedef bool                                  const_reference;<br />
2818 T     typedef implementation defined                iterator;<br />
2819 T     typedef implementation defined                const_iterator;<br />
2820 T     typedef implementation defined                size_type;<br />
2821 T     typedef implementation defined                difference_type;<br />
2822 T     typedef bool                                  value_type;<br />
2823 T     typedef Allocator                             allocator_type;<br />
2824 T     typedef implementation defined                pointer;<br />
2825 T     typedef implementation defined                const_pointer<br />
2826 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
2827 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
2828       // bit reference:<br />
2829 T     class reference {<br />
2830        friend class vector;<br />
2831 T      reference();<br />
2832       public:<br />
2833 T      ~reference();<br />
2834 T       operator bool() const;<br />
2835 T       reference&amp; operator=(const bool x);<br />
2836 T       reference&amp; operator=(const reference&amp; x);<br />
2837 T       void flip();              // flips the bit<br />
2838       };<br />
2839 <br />
2840       // construct/copy/destroy:<br />
2841 T     explicit vector(const Allocator&amp; = Allocator());<br />
2842 T     explicit vector(size_type n, const bool&amp; value = bool(),<br />
2843                       const Allocator&amp; = Allocator());<br />
2844 T     template &lt;class InputIterator&gt;<br />
2845         vector(InputIterator first, InputIterator last,<br />
2846           const Allocator&amp; = Allocator());<br />
2847 T     vector(const vector&lt;bool,Allocator&gt;&amp; x);<br />
2848 T    ~vector();<br />
2849 T     vector&lt;bool,Allocator&gt;&amp; operator=(const vector&lt;bool,Allocator&gt;&amp; x);<br />
2850 T     template &lt;class InputIterator&gt;<br />
2851         void assign(InputIterator first, InputIterator last);<br />
2852 T     void assign(size_type n, const T&amp; t);<br />
2853 T     allocator_type get_allocator() const;<br />
2854       // iterators:<br />
2855 T     iterator               begin();<br />
2856 T     const_iterator         begin() const;<br />
2857 T     iterator               end();<br />
2858 T     const_iterator         end() const;<br />
2859 T     reverse_iterator       rbegin();<br />
2860 T     const_reverse_iterator rbegin() const;<br />
2861 T     reverse_iterator       rend();<br />
2862 T     const_reverse_iterator rend() const;<br />
2863       // capacity:<br />
2864 T     size_type size() const;<br />
2865 T     size_type max_size() const;<br />
2866 T     void      resize(size_type sz, bool c = false);<br />
2867 T     size_type capacity() const;<br />
2868 T     bool      empty() const;<br />
2869 T     void      reserve(size_type n);<br />
2870       // element access:<br />
2871 T     reference       operator[](size_type n);<br />
2872 T     const_reference operator[](size_type n) const;<br />
2873 T     const_reference at(size_type n) const;<br />
2874 T     reference       at(size_type n);<br />
2875 T     reference       front();<br />
2876 T     const_reference front() const;<br />
2877 T     reference       back();<br />
2878 T     const_reference back() const;<br />
2879       // modifiers:<br />
2880 T     void push_back(const bool&amp; x);<br />
2881 T     void pop_back();<br />
2882 T     iterator insert(iterator position, const bool&amp; x);<br />
2883 T     void     insert (iterator position, size_type n, const bool&amp; x);<br />
2884 T     template &lt;class InputIterator&gt;<br />
2885           void insert(iterator position,<br />
2886                       InputIterator first, InputIterator last);<br />
2887 T     iterator erase(iterator position);<br />
2888 T     iterator erase(iterator first, iterator last);<br />
2889 T     void swap(vector&lt;bool,Allocator&gt;&amp;);<br />
2890 T     static void swap(reference x, reference y);<br />
2891 T     void flip();                // flips all bits<br />
2892 T     void clear();<br />
2893     };<br />
2894 <br />
2895 T   template &lt;class Allocator&gt;<br />
2896       bool operator==(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2897                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2898 T   template &lt;class Allocator&gt;<br />
2899       bool operator&lt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
2900                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2901 T   template &lt;class Allocator&gt;<br />
2902       bool operator!=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2903                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2904 T   template &lt;class Allocator&gt;<br />
2905       bool operator&gt; (const vector&lt;bool,Allocator&gt;&amp; x,<br />
2906                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2907 T   template &lt;class Allocator&gt;<br />
2908       bool operator&gt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2909                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2910 T   template &lt;class Allocator&gt;<br />
2911       bool operator&lt;=(const vector&lt;bool,Allocator&gt;&amp; x,<br />
2912                       const vector&lt;bool,Allocator&gt;&amp; y);<br />
2913     // specialized algorithms:<br />
2914 T   template &lt;class Allocator&gt;<br />
2915       void swap(vector&lt;bool,Allocator&gt;&amp; x, vector&lt;bool,Allocator&gt;&amp; y);<br />
2916 <br />
2917    23.3  Associative containers                         [lib.associative]<br />
2918 <br />
2919  &lt;map&gt; and &lt;set&gt;:<br />
2920 <br />
2921    Header &lt;map&gt; synopsis<br />
2922 <br />
2923     template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
2924               class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
2925 T     class map;<br />
2926 <br />
2927 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2928       bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2929                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2930 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2931       bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2932                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2933 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2934       bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2935                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2936 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2937       bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2938                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2939 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2940       bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2941                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2942 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2943       bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2944                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2945 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2946       void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2947                 map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2948 T   template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
2949               class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
2950       class multimap;<br />
2951 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2952       bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2953                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2954 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2955       bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2956                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2957 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2958       bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2959                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2960 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2961       bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2962                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2963 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2964       bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2965                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2966 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2967       bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2968                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2969 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
2970       void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
2971                 multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
2972    }<br />
2973 <br />
2974    Header &lt;set&gt; synopsis<br />
2975 <br />
2976     template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
2977               class Allocator = allocator&lt;Key&gt; &gt;<br />
2978 T     class set;<br />
2979 <br />
2980 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2981       bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
2982                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
2983 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2984       bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
2985                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
2986 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2987       bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
2988                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
2989 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2990       bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
2991                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
2992 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2993       bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
2994                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
2995 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2996       bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
2997                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
2998 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
2999       void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3000                 set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3001 T   template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
3002               class Allocator = allocator&lt;Key&gt; &gt;<br />
3003       class multiset;<br />
3004 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3005       bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3006                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3007 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3008       bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3009                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3010 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3011       bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3012                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3013 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3014       bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3015                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3016 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3017       bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3018                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3019 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3020       bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3021                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3022 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3023       void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3024                 multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3025    }<br />
3026 <br />
3027    23.3.1  Template class map                                   [lib.map]<br />
3028 <br />
3029     template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
3030               class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
3031 T     class map {<br />
3032     public:<br />
3033       // types:<br />
3034 T     typedef Key                                   key_type;<br />
3035 T     typedef T                                     mapped_type;<br />
3036 T     typedef pair&lt;const Key, T&gt;                    value_type;<br />
3037 T     typedef Compare                               key_compare;<br />
3038 T     typedef Allocator                             allocator_type;<br />
3039 T     typedef typename Allocator::reference         reference;<br />
3040 T     typedef typename Allocator::const_reference   const_reference;<br />
3041 T     typedef implementation defined                iterator;<br />
3042 T     typedef implementation defined                const_iterator;<br />
3043 T     typedef implementation defined                size_type;<br />
3044 T     typedef implementation defined                difference_type;<br />
3045 T     typedef typename Allocator::pointer           pointer;<br />
3046 T     typedef typename Allocator::const_pointer     const_pointer;<br />
3047 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
3048 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
3049 T     class value_compare<br />
3050         : public binary_function&lt;value_type,value_type,bool&gt; {<br />
3051       friend class map;<br />
3052       protected:<br />
3053 T       Compare comp;<br />
3054 T       value_compare(Compare c) : comp(c) {}<br />
3055       public:<br />
3056 T       bool operator()(const value_type&amp; x, const value_type&amp; y) const {<br />
3057           return comp(x.first, y.first);<br />
3058         }<br />
3059       };<br />
3060 <br />
3061       // _lib.map.cons_ construct/copy/destroy:<br />
3062 T     explicit map(const Compare&amp; comp = Compare(),<br />
3063                    const Allocator&amp; = Allocator());<br />
3064 T     template &lt;class InputIterator&gt;<br />
3065         map(InputIterator first, InputIterator last,<br />
3066             const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());<br />
3067 T     map(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
3068 T    ~map();<br />
3069 T     map&lt;Key,T,Compare,Allocator&gt;&amp;<br />
3070         operator=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
3071       // iterators:<br />
3072 T     iterator               begin();<br />
3073 T     const_iterator         begin() const;<br />
3074 T     iterator               end();<br />
3075 T     const_iterator         end() const;<br />
3076 T     reverse_iterator       rbegin();<br />
3077 T     const_reverse_iterator rbegin() const;<br />
3078 T     reverse_iterator       rend();<br />
3079 T     const_reverse_iterator rend() const;<br />
3080       // capacity:<br />
3081 T     bool      empty() const;<br />
3082 T     size_type size() const;<br />
3083 T     size_type max_size() const;<br />
3084       // _lib.map.access_ element access:<br />
3085 T     T&amp; operator[](const key_type&amp; x);<br />
3086       // modifiers:<br />
3087 T     pair&lt;iterator, bool&gt; insert(const value_type&amp; x);<br />
3088 T     iterator             insert(iterator position, const value_type&amp; x);<br />
3089 T     template &lt;class InputIterator&gt;<br />
3090         void insert(InputIterator first, InputIterator last);<br />
3091 T     void      erase(iterator position);<br />
3092 T     size_type erase(const key_type&amp; x);<br />
3093 T     void      erase(iterator first, iterator last);<br />
3094 T     void swap(map&lt;Key,T,Compare,Allocator&gt;&amp;);<br />
3095 T     void clear();<br />
3096       // observers:<br />
3097 T     key_compare   key_comp() const;<br />
3098 T     value_compare value_comp() const;<br />
3099       // _lib.map.ops_ map operations:<br />
3100 T     iterator       find(const key_type&amp; x);<br />
3101 T     const_iterator find(const key_type&amp; x) const;<br />
3102 T     size_type      count(const key_type&amp; x) const;<br />
3103 T     iterator       lower_bound(const key_type&amp; x);<br />
3104 T     const_iterator lower_bound(const key_type&amp; x) const;<br />
3105 T     iterator       upper_bound(const key_type&amp; x);<br />
3106 T     const_iterator upper_bound(const key_type&amp; x) const;<br />
3107 T     pair&lt;iterator,iterator&gt;<br />
3108           equal_range(const key_type&amp; x);<br />
3109 T     pair&lt;const_iterator,const_iterator&gt;<br />
3110           equal_range(const key_type&amp; x) const;<br />
3111     };<br />
3112 <br />
3113 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3114       bool operator==(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3115                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3116 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3117       bool operator&lt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3118                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3119 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3120       bool operator!=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3121                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3122 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3123       bool operator&gt; (const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3124                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3125 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3126       bool operator&gt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3127                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3128 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3129       bool operator&lt;=(const map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3130                       const map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3131     // specialized algorithms:<br />
3132 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3133       void swap(map&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3134                 map&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3135 <br />
3136    23.3.2  Template class multimap                         [lib.multimap]<br />
3137 <br />
3138     template &lt;class Key, class T, class Compare = less&lt;Key&gt;,<br />
3139               class Allocator = allocator&lt;pair&lt;const Key, T&gt; &gt; &gt;<br />
3140 T   class multimap {<br />
3141     public:<br />
3142       // types:<br />
3143 T     typedef Key                                   key_type;<br />
3144 T     typedef T                                     mapped_type;<br />
3145 T     typedef pair&lt;const Key,T&gt;                     value_type;<br />
3146 T     typedef Compare                               key_compare;<br />
3147 T     typedef Allocator                             allocator_type;<br />
3148 T     typedef typename Allocator::reference         reference;<br />
3149 T     typedef typename Allocator::const_reference   const_reference;<br />
3150 T     typedef implementation defined                iterator;<br />
3151 T     typedef implementation defined                const_iterator;<br />
3152 T     typedef implementation defined                size_type;<br />
3153 T     typedef implementation defined                difference_type<br />
3154 T     typedef typename Allocator::pointer           pointer;<br />
3155 T     typedef typename Allocator::const_pointer     const_pointer;<br />
3156 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
3157 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
3158 T     class value_compare<br />
3159         : public binary_function&lt;value_type,value_type,bool&gt; {<br />
3160       friend class multimap;<br />
3161       protected:<br />
3162 T       Compare comp;<br />
3163 T       value_compare(Compare c) : comp(c) {}<br />
3164       public:<br />
3165 T       bool operator()(const value_type&amp; x, const value_type&amp; y) const {<br />
3166           return comp(x.first, y.first);<br />
3167         }<br />
3168       };<br />
3169       // construct/copy/destroy:<br />
3170 T     explicit multimap(const Compare&amp; comp = Compare(),<br />
3171                         const Allocator&amp; = Allocator());<br />
3172 T     template &lt;class InputIterator&gt;<br />
3173         multimap(InputIterator first, InputIterator last,<br />
3174                  const Compare&amp; comp = Compare(),<br />
3175                  const Allocator&amp; = Allocator());<br />
3176 T     multimap(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
3177 T    ~multimap();<br />
3178 T     multimap&lt;Key,T,Compare,Allocator&gt;&amp;<br />
3179         operator=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x);<br />
3180 T     allocator_type get_allocator() const;<br />
3181 <br />
3182       // iterators:<br />
3183 T     iterator               begin();<br />
3184 T     const_iterator         begin() const;<br />
3185 T     iterator               end();<br />
3186 T     const_iterator         end() const;<br />
3187 T     reverse_iterator       rbegin();<br />
3188 T     const_reverse_iterator rbegin() const;<br />
3189 T     reverse_iterator       rend();<br />
3190 T     const_reverse_iterator rend() const;<br />
3191       // capacity:<br />
3192 T     bool           empty() const;<br />
3193 T     size_type      size() const;<br />
3194 T     size_type      max_size() const;<br />
3195       // modifiers:<br />
3196 T     iterator insert(const value_type&amp; x);<br />
3197 T     iterator insert(iterator position, const value_type&amp; x);<br />
3198 T     template &lt;class InputIterator&gt;<br />
3199         void insert(InputIterator first, InputIterator last);<br />
3200 T     void      erase(iterator position);<br />
3201 T     size_type erase(const key_type&amp; x);<br />
3202 T     void      erase(iterator first, iterator last);<br />
3203 T     void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp;);<br />
3204 T     void clear();<br />
3205       // observers:<br />
3206 T     key_compare    key_comp() const;<br />
3207 T     value_compare  value_comp() const;<br />
3208       // map operations:<br />
3209 T     iterator       find(const key_type&amp; x);<br />
3210 T     const_iterator find(const key_type&amp; x) const;<br />
3211 T     size_type      count(const key_type&amp; x) const;<br />
3212 T     iterator       lower_bound(const key_type&amp; x);<br />
3213 T     const_iterator lower_bound(const key_type&amp; x) const;<br />
3214 T     iterator       upper_bound(const key_type&amp; x);<br />
3215 T     const_iterator upper_bound(const key_type&amp; x) const;<br />
3216 T     pair&lt;iterator,iterator&gt;             equal_range(const key_type&amp; x);<br />
3217 T     pair&lt;const_iterator,const_iterator&gt; equal_range(const key_type&amp; x) const;<br />
3218     };<br />
3219 <br />
3220 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3221       bool operator==(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3222                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3223 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3224       bool operator&lt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3225                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3226 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3227       bool operator!=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3228                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3229 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3230       bool operator&gt; (const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3231                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3232 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3233       bool operator&gt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3234                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3235 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3236       bool operator&lt;=(const multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3237                       const multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3238     // specialized algorithms:<br />
3239 T   template &lt;class Key, class T, class Compare, class Allocator&gt;<br />
3240       void swap(multimap&lt;Key,T,Compare,Allocator&gt;&amp; x,<br />
3241                 multimap&lt;Key,T,Compare,Allocator&gt;&amp; y);<br />
3242 <br />
3243 <br />
3244    23.3.3  Template class set                                   [lib.set]<br />
3245 <br />
3246     template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
3247               class Allocator = allocator&lt;Key&gt; &gt;<br />
3248 T   class set {<br />
3249     public:<br />
3250       // types:<br />
3251 T     typedef Key                                   key_type;<br />
3252 T     typedef Key                                   value_type;<br />
3253 T     typedef Compare                               key_compare;<br />
3254 T     typedef Compare                               value_compare;<br />
3255 T     typedef Allocator                             allocator_type;<br />
3256 T     typedef typename Allocator::reference         reference;<br />
3257 T     typedef typename Allocator::const_reference   const_reference;<br />
3258 T     typedef implementation defined                iterator;<br />
3259 T     typedef implementation defined                const_iterator;<br />
3260 T     typedef implementation defined                size_type;<br />
3261 T     typedef implementation defined                difference_type;<br />
3262 T     typedef typename Allocator::pointer           pointer;<br />
3263 T     typedef typename Allocator::const_pointer     const_pointer;<br />
3264 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
3265 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
3266       // _lib.set.cons_ construct/copy/destroy:<br />
3267 T     explicit set(const Compare&amp; comp = Compare(),<br />
3268                    const Allocator&amp; = Allocator());<br />
3269 T     template &lt;class InputIterator&gt;<br />
3270         set(InputIterator first, InputIterator last,<br />
3271             const Compare&amp; comp = Compare(), const Allocator&amp; = Allocator());<br />
3272 T     set(const set&lt;Key,Compare,Allocator&gt;&amp; x);<br />
3273 T    ~set();<br />
3274 T     set&lt;Key,Compare,Allocator&gt;&amp;<br />
3275         operator=(const set&lt;Key,Compare,Allocator&gt;&amp; x);<br />
3276 T     allocator_type get_allocator() const;<br />
3277       // iterators:<br />
3278 T     iterator               begin();<br />
3279 T     const_iterator         begin() const;<br />
3280 T     iterator               end();<br />
3281 T     const_iterator         end() const;<br />
3282 T     reverse_iterator       rbegin();<br />
3283 T     const_reverse_iterator rbegin() const;<br />
3284 T     reverse_iterator       rend();<br />
3285 T     const_reverse_iterator rend() const;<br />
3286       // capacity:<br />
3287 T     bool          empty() const;<br />
3288 T     size_type     size() const;<br />
3289 T     size_type     max_size() const;<br />
3290       // modifiers:<br />
3291 T     pair&lt;iterator,bool&gt; insert(const value_type&amp; x);<br />
3292 T     iterator            insert(iterator position, const value_type&amp; x);<br />
3293 T     template &lt;class InputIterator&gt;<br />
3294 T         void insert(InputIterator first, InputIterator last);<br />
3295 T     void      erase(iterator position);<br />
3296 T     size_type erase(const key_type&amp; x);<br />
3297 T     void      erase(iterator first, iterator last);<br />
3298 T     void swap(set&lt;Key,Compare,Allocator&gt;&amp;);<br />
3299 T     void clear();<br />
3300 <br />
3301       // observers:<br />
3302 T     key_compare   key_comp() const;<br />
3303 T     value_compare value_comp() const;<br />
3304       // set operations:<br />
3305 T     iterator  find(const key_type&amp; x) const;<br />
3306 T     size_type count(const key_type&amp; x) const;<br />
3307 T     iterator  lower_bound(const key_type&amp; x) const;<br />
3308 T     iterator  upper_bound(const key_type&amp; x) const;<br />
3309 T     pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;<br />
3310     };<br />
3311 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3312       bool operator==(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3313                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3314 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3315       bool operator&lt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3316                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3317 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3318       bool operator!=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3319                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3320 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3321       bool operator&gt; (const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3322                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3323 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3324       bool operator&gt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3325                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3326 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3327       bool operator&lt;=(const set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3328                       const set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3329     // specialized algorithms:<br />
3330 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3331       void swap(set&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3332                 set&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3333 <br />
3334    23.3.4  Template class multiset                         [lib.multiset]<br />
3335 <br />
3336     template &lt;class Key, class Compare = less&lt;Key&gt;,<br />
3337               class Allocator = allocator&lt;Key&gt; &gt;<br />
3338 T   class multiset {<br />
3339     public:<br />
3340       // types:<br />
3341 T     typedef Key                                   key_type;<br />
3342 T     typedef Key                                   value_type;<br />
3343 T     typedef Compare                               key_compare;<br />
3344 T     typedef Compare                               value_compare;<br />
3345 T     typedef Allocator                             allocator_type;<br />
3346 T     typedef typename Allocator::reference         reference;<br />
3347 T     typedef typename Allocator::const_reference   const_reference;<br />
3348 T     typedef implementation defined                iterator;<br />
3349 T     typedef implementation defined                const_iterator;<br />
3350 T     typedef implementation defined                size_type;<br />
3351 T     typedef implementation defined                difference_type<br />
3352 T     typedef typename Allocator::pointer           pointer;<br />
3353 T     typedef typename Allocator::const_pointer     const_pointer;<br />
3354 T     typedef std::reverse_iterator&lt;iterator&gt;       reverse_iterator;<br />
3355 T     typedef std::reverse_iterator&lt;const_iterator&gt; const_reverse_iterator;<br />
3356 <br />
3357       // construct/copy/destroy:<br />
3358 T     explicit multiset(const Compare&amp; comp = Compare(),<br />
3359                         const Allocator&amp; = Allocator());<br />
3360 T     template &lt;class InputIterator&gt;<br />
3361         multiset(InputIterator first, InputIterator last,<br />
3362                  const Compare&amp; comp = Compare(),<br />
3363                  const Allocator&amp; = Allocator());<br />
3364 T     multiset(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);<br />
3365 T    ~multiset();<br />
3366 T     multiset&lt;Key,Compare,Allocator&gt;&amp;<br />
3367           operator=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x);<br />
3368 T     allocator_type get_allocator() const;<br />
3369       // iterators:<br />
3370 T     iterator               begin();<br />
3371 T     const_iterator         begin() const;<br />
3372 T     iterator               end();<br />
3373 T     const_iterator         end() const;<br />
3374 T     reverse_iterator       rbegin();<br />
3375 T     const_reverse_iterator rbegin() const;<br />
3376 T     reverse_iterator       rend();<br />
3377 T     const_reverse_iterator rend() const;<br />
3378       // capacity:<br />
3379 T     bool          empty() const;<br />
3380 T     size_type     size() const;<br />
3381 T     size_type     max_size() const;<br />
3382       // modifiers:<br />
3383 T     iterator insert(const value_type&amp; x);<br />
3384 T     iterator insert(iterator position, const value_type&amp; x);<br />
3385 T     template &lt;class InputIterator&gt;<br />
3386         void insert(InputIterator first, InputIterator last);<br />
3387 T     void      erase(iterator position);<br />
3388 T     size_type erase(const key_type&amp; x);<br />
3389 T     void      erase(iterator first, iterator last);<br />
3390 T     void swap(multiset&lt;Key,Compare,Allocator&gt;&amp;);<br />
3391 T     void clear();<br />
3392       // observers:<br />
3393 T     key_compare   key_comp() const;<br />
3394 T     value_compare value_comp() const;<br />
3395       // set operations:<br />
3396 T     iterator  find(const key_type&amp; x) const;<br />
3397 T     size_type count(const key_type&amp; x) const;<br />
3398 T     iterator  lower_bound(const key_type&amp; x) const;<br />
3399 T     iterator  upper_bound(const key_type&amp; x) const;<br />
3400 T     pair&lt;iterator,iterator&gt; equal_range(const key_type&amp; x) const;<br />
3401     };<br />
3402 <br />
3403 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3404       bool operator==(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3405                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3406 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3407       bool operator&lt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3408                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3409 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3410       bool operator!=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3411                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3412 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3413       bool operator&gt; (const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3414                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3415 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3416       bool operator&gt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3417                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3418 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3419       bool operator&lt;=(const multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3420                       const multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3421     // specialized algorithms:<br />
3422 T   template &lt;class Key, class Compare, class Allocator&gt;<br />
3423       void swap(multiset&lt;Key,Compare,Allocator&gt;&amp; x,<br />
3424                 multiset&lt;Key,Compare,Allocator&gt;&amp; y);<br />
3425 <br />
3426    23.3.5  Template class bitset                    [lib.template.bitset]<br />
3427 <br />
3428    Header &lt;bitset&gt; synopsis<br />
3429 <br />
3430 T   template &lt;size_t N&gt; class bitset;<br />
3431     // _lib.bitset.operators_ bitset operations:<br />
3432 T   template &lt;size_t N&gt;<br />
3433       bitset&lt;N&gt; operator&amp;(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
3434 T   template &lt;size_t N&gt;<br />
3435       bitset&lt;N&gt; operator|(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
3436 T   template &lt;size_t N&gt;<br />
3437       bitset&lt;N&gt; operator^(const bitset&lt;N&gt;&amp;, const bitset&lt;N&gt;&amp;);<br />
3438 T   template &lt;class charT, class traits, size_t N&gt;<br />
3439       basic_istream&lt;charT, traits&gt;&amp;<br />
3440       operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp; is, bitset&lt;N&gt;&amp; x);<br />
3441 T   template &lt;class charT, class traits, size_t N&gt;<br />
3442       basic_ostream&lt;charT, traits&gt;&amp;<br />
3443       operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp; os, const bitset&lt;N&gt;&amp; x);<br />
3444 <br />
3445 T   template&lt;size_t N&gt; class bitset {<br />
3446     public:<br />
3447       // bit reference:<br />
3448 T     class reference {<br />
3449         friend class bitset;<br />
3450 T       reference();<br />
3451       public:<br />
3452 T      ~reference();<br />
3453 T       reference&amp; operator=(bool x);             // for b[i] = x;<br />
3454 T       reference&amp; operator=(const reference&amp;);   // for b[i] = b[j];<br />
3455 T       bool operator~() const;                   // flips the bit<br />
3456 T       operator bool() const;                    // for x = b[i];<br />
3457 T       reference&amp; flip();                        // for b[i].flip();<br />
3458       };<br />
3459 <br />
3460       // _lib.bitset.cons_ constructors:<br />
3461 T     bitset();<br />
3462 T     bitset(unsigned long val);<br />
3463 T     template&lt;class charT, class traits, class Allocator&gt;<br />
3464         explicit bitset(<br />
3465           const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
3466           typename basic_string&lt;charT,traits,Allocator&gt;::size_type pos = 0,<br />
3467           typename basic_string&lt;charT,traits,Allocator&gt;::size_type n =<br />
3468             basic_string&lt;charT,traits,Allocator&gt;::npos);<br />
3469       // _lib.bitset.members_ bitset operations:<br />
3470 T     bitset&lt;N&gt;&amp; operator&amp;=(const bitset&lt;N&gt;&amp; rhs);<br />
3471 T     bitset&lt;N&gt;&amp; operator|=(const bitset&lt;N&gt;&amp; rhs);<br />
3472 T     bitset&lt;N&gt;&amp; operator^=(const bitset&lt;N&gt;&amp; rhs);<br />
3473 T     bitset&lt;N&gt;&amp; operator&lt;&lt;=(size_t pos);<br />
3474 T     bitset&lt;N&gt;&amp; operator&gt;&gt;=(size_t pos);<br />
3475 T     bitset&lt;N&gt;&amp; set();<br />
3476 T     bitset&lt;N&gt;&amp; set(size_t pos, int val = true);<br />
3477 T     bitset&lt;N&gt;&amp; reset();<br />
3478 T     bitset&lt;N&gt;&amp; reset(size_t pos);<br />
3479 T     bitset&lt;N&gt;  operator~() const;<br />
3480 T     bitset&lt;N&gt;&amp; flip();<br />
3481 T     bitset&lt;N&gt;&amp; flip(size_t pos);<br />
3482       // element access:<br />
3483 T     reference operator[](size_t pos);         // for b[i];<br />
3484 T     unsigned long  to_ulong() const;<br />
3485 T     template &lt;class charT, class traits, class Allocator&gt;<br />
3486         basic_string&lt;charT, traits, Allocator&gt; to_string() const;<br />
3487 T     size_t count() const;<br />
3488 T     size_t size()  const;<br />
3489 T     bool operator==(const bitset&lt;N&gt;&amp; rhs) const;<br />
3490 T     bool operator!=(const bitset&lt;N&gt;&amp; rhs) const;<br />
3491 T     bool test(size_t pos) const;<br />
3492 T     bool any() const;<br />
3493 T     bool none() const;<br />
3494 T     bitset&lt;N&gt; operator&lt;&lt;(size_t pos) const;<br />
3495 T     bitset&lt;N&gt; operator&gt;&gt;(size_t pos) const;<br />
3496     };<br />
3497 <br />
3498 <br />
3499 <br />
3500 <br />
3501    24.2  Header &lt;iterator&gt; synopsis               [lib.iterator.synopsis]<br />
3502 <br />
3503     // _lib.iterator.primitives_, primitives:<br />
3504 T   template&lt;class Iterator&gt; struct iterator_traits;<br />
3505 T   template&lt;class T&gt; struct iterator_traits&lt;T*&gt;;<br />
3506 <br />
3507 X   template&lt;class Category, class T, class Distance = ptrdiff_t,<br />
3508              class Pointer = T*, class Reference = T&amp;&gt; struct iterator;<br />
3509 T   struct input_iterator_tag {};<br />
3510 T   struct output_iterator_tag {};<br />
3511 T   struct forward_iterator_tag: public input_iterator_tag {};<br />
3512 T   struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
3513 T   struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
3514     // _lib.iterator.operations_, iterator operations:<br />
3515 T   template &lt;class InputIterator, class Distance&gt;<br />
3516       void advance(InputIterator&amp; i, Distance n);<br />
3517 T   template &lt;class InputIterator&gt;<br />
3518       typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
3519       distance(InputIterator first, InputIterator last);<br />
3520     // _lib.predef.iterators_, predefined iterators:<br />
3521 X   template &lt;class Iterator&gt; class reverse_iterator;<br />
3522 T   template &lt;class Iterator&gt;<br />
3523       bool operator==(<br />
3524         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3525         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3526 T   template &lt;class Iterator&gt;<br />
3527       bool operator&lt;(<br />
3528         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3529         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3530 T   template &lt;class Iterator&gt;<br />
3531       bool operator!=(<br />
3532         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3533         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3534 T   template &lt;class Iterator&gt;<br />
3535       bool operator&gt;(<br />
3536         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3537         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3538 T   template &lt;class Iterator&gt;<br />
3539       bool operator&gt;=(<br />
3540         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3541         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3542 T   template &lt;class Iterator&gt;<br />
3543       bool operator&lt;=(<br />
3544         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3545         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3546 T   template &lt;class Iterator&gt;<br />
3547       typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(<br />
3548         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3549         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3550 T   template &lt;class Iterator&gt;<br />
3551       reverse_iterator&lt;Iterator&gt;<br />
3552         operator+(<br />
3553           typename reverse_iterator&lt;Iterator&gt;::difference_type n,<br />
3554           const reverse_iterator&lt;Iterator&gt;&amp; x);<br />
3555 <br />
3556 X   template &lt;class Container&gt; class back_insert_iterator;<br />
3557 T   template &lt;class Container&gt;<br />
3558       back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);<br />
3559 X   template &lt;class Container&gt; class front_insert_iterator;<br />
3560 T   template &lt;class Container&gt;<br />
3561       front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);<br />
3562 X   template &lt;class Container&gt; class insert_iterator;<br />
3563 T   template &lt;class Container, class Iterator&gt;<br />
3564       insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);<br />
3565     // _lib.stream.iterators_, stream iterators:<br />
3566 X   template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,<br />
3567               class Distance = ptrdiff_t&gt;<br />
3568       class istream_iterator;<br />
3569     template &lt;class T, class charT, class traits, class Distance&gt;<br />
3570 X     bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
3571                       const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
3572     template &lt;class T, class charT, class traits, class Distance&gt;<br />
3573 X     bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
3574                       const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
3575 X   template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;<br />
3576         class ostream_iterator;<br />
3577 X   template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
3578       class istreambuf_iterator;<br />
3579 X   template &lt;class charT, class traits&gt;<br />
3580       bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
3581                       const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
3582 X   template &lt;class charT, class traits&gt;<br />
3583       bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
3584                       const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
3585 T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
3586       class ostreambuf_iterator;<br />
3587 <br />
3588    24.3  Iterator primitives                    [lib.iterator.primitives]<br />
3589 <br />
3590 T   template&lt;class Iterator&gt; struct iterator_traits {<br />
3591 T     typedef typename Iterator::difference_type difference_type;<br />
3592 T     typedef typename Iterator::value_type value_type;<br />
3593 T     typedef typename Iterator::pointer pointer;<br />
3594 T     typedef typename Iterator::reference reference;<br />
3595 T     typedef typename Iterator::iterator_category iterator_category;<br />
3596     };<br />
3597 <br />
3598 T   template&lt;class T&gt; struct iterator_traits&lt;T*&gt; {<br />
3599 T     typedef ptrdiff_t difference_type;<br />
3600 T     typedef T value_type;<br />
3601 T     typedef T* pointer;<br />
3602 T     typedef T&amp; reference;<br />
3603 T     typedef random_access_iterator_tag iterator_category;<br />
3604     };<br />
3605 <br />
3606 T   template&lt;class T&gt; struct iterator_traits&lt;const T*&gt; {<br />
3607 T     typedef ptrdiff_t difference_type;<br />
3608 T     typedef T value_type;<br />
3609 T     typedef const T* pointer;<br />
3610 T     typedef const T&amp; reference;<br />
3611 T     typedef random_access_iterator_tag iterator_category;<br />
3612     };<br />
3613 <br />
3614    24.3.2  Basic iterator                            [lib.iterator.basic]<br />
3615 <br />
3616     template&lt;class Category, class T, class Distance = ptrdiff_t,<br />
3617              class Pointer = T*, class Reference = T&amp;&gt;<br />
3618 X     struct iterator {<br />
3619 T         typedef T         value_type;<br />
3620 T         typedef Distance  difference_type;<br />
3621 T         typedef Pointer   pointer;<br />
3622 T         typedef Reference reference;<br />
3623 T         typedef Category  iterator_category;<br />
3624     };<br />
3625 <br />
3626    24.3.3  Standard iterator tags                 [lib.std.iterator.tags]<br />
3627 <br />
3628 T   struct input_iterator_tag {};<br />
3629 T   struct output_iterator_tag {};<br />
3630 T   struct forward_iterator_tag: public input_iterator_tag {};<br />
3631 T   struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
3632 T   struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
3633 <br />
3634 <br />
3635    24.4.1  Reverse iterators                      [lib.reverse.iterators]<br />
3636 <br />
3637     template &lt;class Iterator&gt;<br />
3638 X   class reverse_iterator : public<br />
3639           iterator&lt;typename iterator_traits&lt;Iterator&gt;::iterator_category,<br />
3640                    typename iterator_traits&lt;Iterator&gt;::value_type,<br />
3641                    typename iterator_traits&lt;Iterator&gt;::difference_type,<br />
3642                    typename iterator_traits&lt;Iterator&gt;::pointer,<br />
3643                    typename iterator_traits&lt;Iterator&gt;::reference&gt; {<br />
3644     protected:<br />
3645 T     Iterator current;<br />
3646     public:<br />
3647 T     typedef Iterator<br />
3648           iterator_type;<br />
3649 T     typedef typename iterator_traits&lt;Iterator&gt;::difference_type<br />
3650           difference_type;<br />
3651 T     typedef typename iterator_traits&lt;Iterator&gt;::reference<br />
3652           reference;<br />
3653 T     typedef typename iterator_traits&lt;Iterator&gt;::pointer<br />
3654           pointer;<br />
3655 <br />
3656 T     reverse_iterator();<br />
3657 T     explicit reverse_iterator(Iterator x);<br />
3658 T     template &lt;class U&gt; reverse_iterator(const reverse_iterator&lt;U&gt;&amp; u);<br />
3659 T     Iterator base() const;      // explicit<br />
3660 T     reference operator*() const;<br />
3661 T     pointer   operator-&gt;() const;<br />
3662 T     reverse_iterator&amp; operator++();<br />
3663 T     reverse_iterator  operator++(int);<br />
3664 T     reverse_iterator&amp; operator--();<br />
3665 T     reverse_iterator  operator--(int);<br />
3666 <br />
3667 T     reverse_iterator  operator+ (difference_type n) const;<br />
3668 T     reverse_iterator&amp; operator+=(difference_type n);<br />
3669 T     reverse_iterator  operator- (difference_type n) const;<br />
3670 T     reverse_iterator&amp; operator-=(difference_type n);<br />
3671 T     reference operator[](difference_type n) const;<br />
3672     };<br />
3673 T   template &lt;class Iterator&gt;<br />
3674       bool operator==(<br />
3675         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3676         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3677 T   template &lt;class Iterator&gt;<br />
3678       bool operator&lt;(<br />
3679         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3680         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3681 T   template &lt;class Iterator&gt;<br />
3682       bool operator!=(<br />
3683         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3684         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3685 T   template &lt;class Iterator&gt;<br />
3686       bool operator&gt;(<br />
3687         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3688         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3689 T   template &lt;class Iterator&gt;<br />
3690       bool operator&gt;=(<br />
3691         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3692         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3693 T   template &lt;class Iterator&gt;<br />
3694       bool operator&lt;=(<br />
3695         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3696         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3697 T   template &lt;class Iterator&gt;<br />
3698       typename reverse_iterator&lt;Iterator&gt;::difference_type operator-(<br />
3699         const reverse_iterator&lt;Iterator&gt;&amp; x,<br />
3700         const reverse_iterator&lt;Iterator&gt;&amp; y);<br />
3701 T   template &lt;class Iterator&gt;<br />
3702       reverse_iterator&lt;Iterator&gt; operator+(<br />
3703         typename reverse_iterator&lt;Iterator&gt;::difference_type n,<br />
3704         const reverse_iterator&lt;Iterator&gt;&amp; x);<br />
3705 <br />
3706 <br />
3707    24.4.2.1  Template class                    [lib.back.insert.iterator]<br />
3708        back_insert_iterator<br />
3709 <br />
3710     template &lt;class Container&gt;<br />
3711 X   class back_insert_iterator :<br />
3712           public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
3713     protected:<br />
3714 T     Container* container;<br />
3715     public:<br />
3716 T     typedef Container container_type;<br />
3717 T     explicit back_insert_iterator(Container&amp; x);<br />
3718 T     back_insert_iterator&lt;Container&gt;&amp;<br />
3719         operator=(typename Container::const_reference value);<br />
3720 <br />
3721 T     back_insert_iterator&lt;Container&gt;&amp; operator*();<br />
3722 T     back_insert_iterator&lt;Container&gt;&amp; operator++();<br />
3723 T     back_insert_iterator&lt;Container&gt;  operator++(int);<br />
3724     };<br />
3725 T   template &lt;class Container&gt;<br />
3726       back_insert_iterator&lt;Container&gt; back_inserter(Container&amp; x);<br />
3727 <br />
3728 <br />
3729 <br />
3730    24.4.2.3  Template class                   [lib.front.insert.iterator]<br />
3731        front_insert_iterator<br />
3732 <br />
3733     template &lt;class Container&gt;<br />
3734 X   class front_insert_iterator :<br />
3735           public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
3736     protected:<br />
3737 T     Container* container;<br />
3738     public:<br />
3739 T     typedef Container container_type;<br />
3740 T     explicit front_insert_iterator(Container&amp; x);<br />
3741 T     front_insert_iterator&lt;Container&gt;&amp;<br />
3742         operator=(typename Container::const_reference value);<br />
3743 T     front_insert_iterator&lt;Container&gt;&amp; operator*();<br />
3744 T     front_insert_iterator&lt;Container&gt;&amp; operator++();<br />
3745 T     front_insert_iterator&lt;Container&gt;  operator++(int);<br />
3746     };<br />
3747 T   template &lt;class Container&gt;<br />
3748       front_insert_iterator&lt;Container&gt; front_inserter(Container&amp; x);<br />
3749 <br />
3750 <br />
3751    24.4.2.5  Template class insert_iterator         [lib.insert.iterator]<br />
3752 <br />
3753     template &lt;class Container&gt;<br />
3754 X   class insert_iterator :<br />
3755           public iterator&lt;output_iterator_tag,void,void,void,void&gt; {<br />
3756     protected:<br />
3757 T     Container* container;<br />
3758 T     typename Container::iterator iter;<br />
3759     public:<br />
3760 T     typedef Container container_type;<br />
3761 T     insert_iterator(Container&amp; x, typename Container::iterator i);<br />
3762 T     insert_iterator&lt;Container&gt;&amp;<br />
3763         operator=(typename Container::const_reference value);<br />
3764 T     insert_iterator&lt;Container&gt;&amp; operator*();<br />
3765 T     insert_iterator&lt;Container&gt;&amp; operator++();<br />
3766 T     insert_iterator&lt;Container&gt;&amp; operator++(int);<br />
3767     };<br />
3768 T   template &lt;class Container, class Iterator&gt;<br />
3769       insert_iterator&lt;Container&gt; inserter(Container&amp; x, Iterator i);<br />
3770 <br />
3771    24.5.1  Template class istream_iterator         [lib.istream.iterator]<br />
3772 <br />
3773     template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt;,<br />
3774         class Distance = ptrdiff_t&gt;<br />
3775 X   class istream_iterator:<br />
3776       public iterator&lt;input_iterator_tag, T, Distance, const T*, const T&amp;&gt; {<br />
3777     public:<br />
3778 T     typedef charT char_type<br />
3779 T     typedef traits traits_type;<br />
3780 T     typedef basic_istream&lt;charT,traits&gt; istream_type;<br />
3781 T     istream_iterator();<br />
3782 T     istream_iterator(istream_type&amp; s);<br />
3783 T     istream_iterator(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x);<br />
3784 T    ~istream_iterator();<br />
3785 <br />
3786 T     const T&amp; operator*() const;<br />
3787 T     const T* operator-&gt;() const;<br />
3788 T     istream_iterator&lt;T,charT,traits,Distance&gt;&amp; operator++();<br />
3789 T     istream_iterator&lt;T,charT,traits,Distance&gt;  operator++(int);<br />
3790     };<br />
3791 <br />
3792 T   template &lt;class T, class charT, class traits, class Distance&gt;<br />
3793       bool operator==(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
3794                       const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
3795 T   template &lt;class T, class charT, class traits, class Distance&gt;<br />
3796       bool operator!=(const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; x,<br />
3797                       const istream_iterator&lt;T,charT,traits,Distance&gt;&amp; y);<br />
3798 <br />
3799 <br />
3800    24.5.2  Template class ostream_iterator         [lib.ostream.iterator]<br />
3801 <br />
3802     template &lt;class T, class charT = char, class traits = char_traits&lt;charT&gt; &gt;<br />
3803 X   class ostream_iterator:<br />
3804       public iterator&lt;output_iterator_tag, void, void, void, void&gt; {<br />
3805     public:<br />
3806 T     typedef charT char_type;<br />
3807 T     typedef traits traits_type;<br />
3808 T     typedef basic_ostream&lt;charT,traits&gt; ostream_type;<br />
3809 T     ostream_iterator(ostream_type&amp; s);<br />
3810 T     ostream_iterator(ostream_type&amp; s, const charT* delimiter);<br />
3811 T     ostream_iterator(const ostream_iterator&lt;T,charT,traits&gt;&amp; x);<br />
3812 T    ~ostream_iterator();<br />
3813 T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator=(const T&amp; value);<br />
3814 <br />
3815 T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator*();<br />
3816 T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator++();<br />
3817 T     ostream_iterator&lt;T,charT,traits&gt;&amp; operator++(int);<br />
3818     };<br />
3819 <br />
3820 <br />
3821    24.5.3  Template class                       [lib.istreambuf.iterator]<br />
3822        istreambuf_iterator<br />
3823 <br />
3824     template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
3825 X   class istreambuf_iterator<br />
3826        : public iterator&lt;input_iterator_tag, charT,<br />
3827                          typename traits::off_type, charT*, charT&amp;&gt; {<br />
3828     public:<br />
3829 T     typedef charT                         char_type;<br />
3830 T     typedef traits                        traits_type;<br />
3831 T     typedef typename traits::int_type     int_type;<br />
3832 T     typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;<br />
3833 T     typedef basic_istream&lt;charT,traits&gt;   istream_type;<br />
3834 T     class proxy;                        // exposition only<br />
3835 T     istreambuf_iterator() throw();<br />
3836 T     istreambuf_iterator(istream_type&amp; s) throw();<br />
3837 T     istreambuf_iterator(streambuf_type* s) throw();<br />
3838 T     istreambuf_iterator(const proxy&amp; p) throw();<br />
3839 T     charT operator*() const;<br />
3840 T     istreambuf_iterator&lt;charT,traits&gt;&amp; operator++();<br />
3841 T     proxy operator++(int);<br />
3842 X     bool equal(istreambuf_iterator&amp; b);<br />
3843     };<br />
3844 <br />
3845 T   template &lt;class charT, class traits&gt;<br />
3846       bool operator==(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
3847                       const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
3848 <br />
3849 T   template &lt;class charT, class traits&gt;<br />
3850       bool operator!=(const istreambuf_iterator&lt;charT,traits&gt;&amp; a,<br />
3851                       const istreambuf_iterator&lt;charT,traits&gt;&amp; b);<br />
3852 <br />
3853    24.5.3.1  Template class              [lib.istreambuf.iterator::proxy]<br />
3854        istreambuf_iterator::proxy<br />
3855 <br />
3856     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
3857 T     class istreambuf_iterator&lt;charT, traits&gt;::proxy<br />
3858     {<br />
3859 T     charT keep_;<br />
3860 T     basic_streambuf&lt;charT,traits&gt;* sbuf_;<br />
3861 T     proxy(charT c,<br />
3862             basic_streambuf&lt;charT,traits&gt;* sbuf);<br />
3863         : keep_(c), sbuf_(sbuf) {}<br />
3864     public:<br />
3865 T     charT operator*() { return keep_; }<br />
3866     };<br />
3867 <br />
3868 <br />
3869 <br />
3870    24.5.4  Template class                       [lib.ostreambuf.iterator]<br />
3871        ostreambuf_iterator<br />
3872 <br />
3873     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
3874 T   class ostreambuf_iterator:<br />
3875       public iterator&lt;output_iterator_tag, void, void, void, void&gt; {<br />
3876     public:<br />
3877 T     typedef charT                         char_type;<br />
3878 T     typedef traits                        traits_type;<br />
3879 T     typedef basic_streambuf&lt;charT,traits&gt; streambuf_type;<br />
3880 T     typedef basic_ostream&lt;charT,traits&gt;   ostream_type;<br />
3881     public:<br />
3882 T     ostreambuf_iterator(ostream_type&amp; s) throw();<br />
3883 T     ostreambuf_iterator(streambuf_type* s) throw();<br />
3884 T     ostreambuf_iterator&amp; operator=(charT c);<br />
3885 T     ostreambuf_iterator&amp; operator*();<br />
3886 T     ostreambuf_iterator&amp; operator++();<br />
3887 T     ostreambuf_iterator&amp; operator++(int);<br />
3888 T     bool failed() const throw();<br />
3889     };<br />
3890 <br />
3891 <br />
3892    Header &lt;algorithm&gt; synopsis<br />
3893 <br />
3894 <br />
3895     // _lib.alg.nonmodifying_, non-modifying sequence operations:<br />
3896 T   template&lt;class InputIterator, class Function&gt;<br />
3897       Function for_each(InputIterator first, InputIterator last, Function f);<br />
3898 T   template&lt;class InputIterator, class T&gt;<br />
3899       InputIterator find(InputIterator first, InputIterator last,<br />
3900                          const T&amp; value);<br />
3901 T   template&lt;class InputIterator, class Predicate&gt;<br />
3902       InputIterator find_if(InputIterator first, InputIterator last,<br />
3903                             Predicate pred);<br />
3904 T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
3905       ForwardIterator1<br />
3906         find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3907                  ForwardIterator2 first2, ForwardIterator2 last2);<br />
3908 T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
3909              class BinaryPredicate&gt;<br />
3910       ForwardIterator1<br />
3911         find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3912                  ForwardIterator2 first2, ForwardIterator2 last2,<br />
3913                  BinaryPredicate pred);<br />
3914 T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
3915       ForwardIterator1<br />
3916         find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3917                       ForwardIterator2 first2, ForwardIterator2 last2);<br />
3918 T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
3919              class BinaryPredicate&gt;<br />
3920       ForwardIterator1<br />
3921         find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3922                  ForwardIterator2 first2, ForwardIterator2 last2,<br />
3923                  BinaryPredicate pred);<br />
3924 T   template&lt;class ForwardIterator&gt;<br />
3925       ForwardIterator adjacent_find(ForwardIterator first,<br />
3926                                     ForwardIterator last);<br />
3927 T   template&lt;class ForwardIterator, class BinaryPredicate&gt;<br />
3928       ForwardIterator adjacent_find(ForwardIterator first,<br />
3929           ForwardIterator last, BinaryPredicate pred);<br />
3930 T   template&lt;class InputIterator, class T&gt;<br />
3931       typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
3932         count(InputIterator first, InputIterator last, const T&amp; value);<br />
3933 T   template&lt;class InputIterator, class Predicate&gt;<br />
3934       typename iterator_traits&lt;InputIterator&gt;::difference_type<br />
3935         count_if(InputIterator first, InputIterator last, Predicate pred);<br />
3936 T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
3937       pair&lt;InputIterator1, InputIterator2&gt;<br />
3938         mismatch(InputIterator1 first1, InputIterator1 last1,<br />
3939                  InputIterator2 first2);<br />
3940 T   template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;<br />
3941       pair&lt;InputIterator1, InputIterator2&gt;<br />
3942         mismatch(InputIterator1 first1, InputIterator1 last1,<br />
3943                  InputIterator2 first2, BinaryPredicate pred);<br />
3944 <br />
3945 T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
3946       bool equal(InputIterator1 first1, InputIterator1 last1,<br />
3947                  InputIterator2 first2);<br />
3948 T   template&lt;class InputIterator1, class InputIterator2, class BinaryPredicate&gt;<br />
3949       bool equal(InputIterator1 first1, InputIterator1 last1,<br />
3950                  InputIterator2 first2, BinaryPredicate pred);<br />
3951 T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
3952       ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3953                               ForwardIterator2 first2, ForwardIterator2 last2);<br />
3954 T   template&lt;class ForwardIterator1, class ForwardIterator2,<br />
3955              class BinaryPredicate&gt;<br />
3956       ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3957                               ForwardIterator2 first2, ForwardIterator2 last2,<br />
3958                               BinaryPredicate pred);<br />
3959 T   template&lt;class ForwardIterator, class Size, class T&gt;<br />
3960       ForwardIterator  search_n(ForwardIterator first, ForwardIterator last,<br />
3961                               Size count, const T&amp; value);<br />
3962 T   template&lt;class ForwardIterator, class Size, class T, class BinaryPredicate&gt;<br />
3963       ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last,<br />
3964                               Size count, const T&amp; value,<br />
3965                               BinaryPredicate pred);<br />
3966     // _lib.alg.modifying.operations_, modifying sequence operations:<br />
3967     // _lib.alg.copy_, copy:<br />
3968 T   template&lt;class InputIterator, class OutputIterator&gt;<br />
3969       OutputIterator copy(InputIterator first, InputIterator last,<br />
3970                           OutputIterator result);<br />
3971 T   template&lt;class BidirectionalIterator1, class BidirectionalIterator2&gt;<br />
3972       BidirectionalIterator2<br />
3973         copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,<br />
3974                       BidirectionalIterator2 result);<br />
3975     // _lib.alg.swap_, swap:<br />
3976 T   template&lt;class T&gt; void swap(T&amp; a, T&amp; b);<br />
3977 T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
3978       ForwardIterator2 swap_ranges(ForwardIterator1 first1,<br />
3979           ForwardIterator1 last1, ForwardIterator2 first2);<br />
3980 T   template&lt;class ForwardIterator1, class ForwardIterator2&gt;<br />
3981       void iter_swap(ForwardIterator1 a, ForwardIterator2 b);<br />
3982 T   template&lt;class InputIterator, class OutputIterator, class UnaryOperation&gt;<br />
3983       OutputIterator transform(InputIterator first, InputIterator last,<br />
3984                                OutputIterator result, UnaryOperation op);<br />
3985 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
3986              class BinaryOperation&gt;<br />
3987       OutputIterator transform(InputIterator1 first1, InputIterator1 last1,<br />
3988                                InputIterator2 first2, OutputIterator result,<br />
3989                                BinaryOperation binary_op);<br />
3990 <br />
3991 T   template&lt;class ForwardIterator, class T&gt;<br />
3992       void replace(ForwardIterator first, ForwardIterator last,<br />
3993                    const T&amp; old_value, const T&amp; new_value);<br />
3994 T   template&lt;class ForwardIterator, class Predicate, class T&gt;<br />
3995       void replace_if(ForwardIterator first, ForwardIterator last,<br />
3996                       Predicate pred, const T&amp; new_value);<br />
3997 T   template&lt;class InputIterator, class OutputIterator, class T&gt;<br />
3998       OutputIterator replace_copy(InputIterator first, InputIterator last,<br />
3999                                   OutputIterator result,<br />
4000                                   const T&amp; old_value, const T&amp; new_value);<br />
4001 T   template&lt;class Iterator, class OutputIterator, class Predicate, class T&gt;<br />
4002       OutputIterator replace_copy_if(Iterator first, Iterator last,<br />
4003                                      OutputIterator result,<br />
4004                                      Predicate pred, const T&amp; new_value);<br />
4005 T   template&lt;class ForwardIterator, class T&gt;<br />
4006       void fill(ForwardIterator first, ForwardIterator last, const T&amp; value);<br />
4007 T   template&lt;class OutputIterator, class Size, class T&gt;<br />
4008       void fill_n(OutputIterator first, Size n, const T&amp; value);<br />
4009 T   template&lt;class ForwardIterator, class Generator&gt;<br />
4010       void generate(ForwardIterator first, ForwardIterator last, Generator gen);<br />
4011 T   template&lt;class OutputIterator, class Size, class Generator&gt;<br />
4012       void generate_n(OutputIterator first, Size n, Generator gen);<br />
4013 T   template&lt;class ForwardIterator, class T&gt;<br />
4014       ForwardIterator remove(ForwardIterator first, ForwardIterator last,<br />
4015                              const T&amp; value);<br />
4016 T   template&lt;class ForwardIterator, class Predicate&gt;<br />
4017       ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,<br />
4018                                 Predicate pred);<br />
4019 T   template&lt;class InputIterator, class OutputIterator, class T&gt;<br />
4020       OutputIterator remove_copy(InputIterator first, InputIterator last,<br />
4021                                  OutputIterator result, const T&amp; value);<br />
4022 T   template&lt;class InputIterator, class OutputIterator, class Predicate&gt;<br />
4023       OutputIterator remove_copy_if(InputIterator first, InputIterator last,<br />
4024                                     OutputIterator result, Predicate pred);<br />
4025 T   template&lt;class ForwardIterator&gt;<br />
4026       ForwardIterator unique(ForwardIterator first, ForwardIterator last);<br />
4027 T   template&lt;class ForwardIterator, class BinaryPredicate&gt;<br />
4028       ForwardIterator unique(ForwardIterator first, ForwardIterator last,<br />
4029                              BinaryPredicate pred);<br />
4030 T   template&lt;class InputIterator, class OutputIterator&gt;<br />
4031       OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
4032                                  OutputIterator result);<br />
4033 T   template&lt;class InputIterator, class OutputIterator, class BinaryPredicate&gt;<br />
4034       OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
4035                                  OutputIterator result, BinaryPredicate pred);<br />
4036 T   template&lt;class BidirectionalIterator&gt;<br />
4037       void reverse(BidirectionalIterator first, BidirectionalIterator last);<br />
4038 T   template&lt;class BidirectionalIterator, class OutputIterator&gt;<br />
4039       OutputIterator reverse_copy(BidirectionalIterator first,<br />
4040                                   BidirectionalIterator last,<br />
4041                                   OutputIterator result);<br />
4042 <br />
4043 T   template&lt;class ForwardIterator&gt;<br />
4044       void rotate(ForwardIterator first, ForwardIterator middle,<br />
4045                   ForwardIterator last);<br />
4046 T   template&lt;class ForwardIterator, class OutputIterator&gt;<br />
4047       OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,<br />
4048                                  ForwardIterator last, OutputIterator result);<br />
4049 T   template&lt;class RandomAccessIterator&gt;<br />
4050       void random_shuffle(RandomAccessIterator first,<br />
4051                           RandomAccessIterator last);<br />
4052 T   template&lt;class RandomAccessIterator, class RandomNumberGenerator&gt;<br />
4053       void random_shuffle(RandomAccessIterator first,<br />
4054                           RandomAccessIterator last,<br />
4055                           RandomNumberGenerator&amp; rand);<br />
4056     // _lib.alg.partitions_, partitions:<br />
4057 T   template&lt;class BidirectionalIterator, class Predicate&gt;<br />
4058       BidirectionalIterator partition(BidirectionalIterator first,<br />
4059                                       BidirectionalIterator last,<br />
4060                                       Predicate pred);<br />
4061 T   template&lt;class BidirectionalIterator, class Predicate&gt;<br />
4062       BidirectionalIterator stable_partition(BidirectionalIterator first,<br />
4063                                              BidirectionalIterator last,<br />
4064                                              Predicate pred);<br />
4065     // _lib.alg.sorting_, sorting and related operations:<br />
4066     // _lib.alg.sort_, sorting:<br />
4067 T   template&lt;class RandomAccessIterator&gt;<br />
4068       void sort(RandomAccessIterator first, RandomAccessIterator last);<br />
4069 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4070       void sort(RandomAccessIterator first, RandomAccessIterator last,<br />
4071                 Compare comp);<br />
4072 T   template&lt;class RandomAccessIterator&gt;<br />
4073       void stable_sort(RandomAccessIterator first, RandomAccessIterator last);<br />
4074 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4075       void stable_sort(RandomAccessIterator first, RandomAccessIterator last,<br />
4076                        Compare comp);<br />
4077 T   template&lt;class RandomAccessIterator&gt;<br />
4078       void partial_sort(RandomAccessIterator first,<br />
4079                         RandomAccessIterator middle,<br />
4080                         RandomAccessIterator last);<br />
4081 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4082       void partial_sort(RandomAccessIterator first,<br />
4083                         RandomAccessIterator middle,<br />
4084                         RandomAccessIterator last, Compare comp);<br />
4085 T   template&lt;class InputIterator, class RandomAccessIterator&gt;<br />
4086       RandomAccessIterator<br />
4087         partial_sort_copy(InputIterator first, InputIterator last,<br />
4088                           RandomAccessIterator result_first,<br />
4089                           RandomAccessIterator result_last);<br />
4090 T   template&lt;class InputIterator, class RandomAccessIterator, class Compare&gt;<br />
4091       RandomAccessIterator<br />
4092         partial_sort_copy(InputIterator first, InputIterator last,<br />
4093                           RandomAccessIterator result_first,<br />
4094                           RandomAccessIterator result_last,<br />
4095                           Compare comp);<br />
4096 <br />
4097 T   template&lt;class RandomAccessIterator&gt;<br />
4098       void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
4099                        RandomAccessIterator last);<br />
4100 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4101       void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
4102                        RandomAccessIterator last, Compare comp);<br />
4103     // _lib.alg.binary.search_, binary search:<br />
4104 T   template&lt;class ForwardIterator, class T&gt;<br />
4105       ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
4106                                   const T&amp; value);<br />
4107 T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
4108       ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
4109                                   const T&amp; value, Compare comp);<br />
4110 T   template&lt;class ForwardIterator, class T&gt;<br />
4111       ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
4112                                   const T&amp; value);<br />
4113 T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
4114       ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
4115                                   const T&amp; value, Compare comp);<br />
4116 T   template&lt;class ForwardIterator, class T&gt;<br />
4117       pair&lt;ForwardIterator, ForwardIterator&gt;<br />
4118         equal_range(ForwardIterator first, ForwardIterator last,<br />
4119                     const T&amp; value);<br />
4120 T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
4121       pair&lt;ForwardIterator, ForwardIterator&gt;<br />
4122         equal_range(ForwardIterator first, ForwardIterator last,<br />
4123                     const T&amp; value, Compare comp);<br />
4124 T   template&lt;class ForwardIterator, class T&gt;<br />
4125       bool binary_search(ForwardIterator first, ForwardIterator last,<br />
4126                          const T&amp; value);<br />
4127 T   template&lt;class ForwardIterator, class T, class Compare&gt;<br />
4128       bool binary_search(ForwardIterator first, ForwardIterator last,<br />
4129                          const T&amp; value, Compare comp);<br />
4130     // _lib.alg.merge_, merge:<br />
4131 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
4132       OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
4133                            InputIterator2 first2, InputIterator2 last2,<br />
4134                            OutputIterator result);<br />
4135 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
4136              class Compare&gt;<br />
4137       OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
4138                            InputIterator2 first2, InputIterator2 last2,<br />
4139                            OutputIterator result, Compare comp);<br />
4140 T   template&lt;class BidirectionalIterator&gt;<br />
4141       void inplace_merge(BidirectionalIterator first,<br />
4142                          BidirectionalIterator middle,<br />
4143                          BidirectionalIterator last);<br />
4144 T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
4145       void inplace_merge(BidirectionalIterator first,<br />
4146                          BidirectionalIterator middle,<br />
4147                          BidirectionalIterator last, Compare comp);<br />
4148 <br />
4149     // _lib.alg.set.operations_, set operations:<br />
4150 T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
4151       bool includes(InputIterator1 first1, InputIterator1 last1,<br />
4152                     InputIterator2 first2, InputIterator2 last2);<br />
4153 T   template&lt;class InputIterator1, class InputIterator2, class Compare&gt;<br />
4154       bool includes(InputIterator1 first1, InputIterator1 last1,<br />
4155                     InputIterator2 first2, InputIterator2 last2, Compare comp);<br />
4156 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
4157       OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
4158                                InputIterator2 first2, InputIterator2 last2,<br />
4159                                OutputIterator result);<br />
4160 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
4161              class Compare&gt;<br />
4162       OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
4163                                InputIterator2 first2, InputIterator2 last2,<br />
4164                                OutputIterator result, Compare comp);<br />
4165 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
4166       OutputIterator set_intersection<br />
4167           (InputIterator1 first1, InputIterator1 last1,<br />
4168            InputIterator2 first2, InputIterator2 last2,<br />
4169            OutputIterator result);<br />
4170 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
4171              class Compare&gt;<br />
4172       OutputIterator set_intersection<br />
4173           (InputIterator1 first1, InputIterator1 last1,<br />
4174            InputIterator2 first2, InputIterator2 last2,<br />
4175            OutputIterator result, Compare comp);<br />
4176 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
4177       OutputIterator set_difference<br />
4178           (InputIterator1 first1, InputIterator1 last1,<br />
4179            InputIterator2 first2, InputIterator2 last2,<br />
4180            OutputIterator result);<br />
4181 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
4182              class Compare&gt;<br />
4183       OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1,<br />
4184                                     InputIterator2 first2, InputIterator2 last2,<br />
4185                                     OutputIterator result, Compare comp);<br />
4186 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator&gt;<br />
4187       OutputIterator<br />
4188         set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
4189                                  InputIterator2 first2, InputIterator2 last2,<br />
4190                                  OutputIterator result);<br />
4191 T   template&lt;class InputIterator1, class InputIterator2, class OutputIterator,<br />
4192               class Compare&gt;<br />
4193       OutputIterator<br />
4194         set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
4195                                  InputIterator2 first2, InputIterator2 last2,<br />
4196                                  OutputIterator result, Compare comp);<br />
4197     // _lib.alg.heap.operations_, heap operations:<br />
4198 T   template&lt;class RandomAccessIterator&gt;<br />
4199       void push_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4200 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4201       void push_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4202                      Compare comp);<br />
4203 <br />
4204 T   template&lt;class RandomAccessIterator&gt;<br />
4205       void pop_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4206 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4207       void pop_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4208                     Compare comp);<br />
4209 T   template&lt;class RandomAccessIterator&gt;<br />
4210       void make_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4211 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4212       void make_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4213                      Compare comp);<br />
4214 T   template&lt;class RandomAccessIterator&gt;<br />
4215       void sort_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4216 T   template&lt;class RandomAccessIterator, class Compare&gt;<br />
4217       void sort_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4218                      Compare comp);<br />
4219     // _lib.alg.min.max_, minimum and maximum:<br />
4220 T   template&lt;class T&gt; const T&amp; min(const T&amp; a, const T&amp; b);<br />
4221 T   template&lt;class T, class Compare&gt;<br />
4222       const T&amp; min(const T&amp; a, const T&amp; b, Compare comp);<br />
4223 T   template&lt;class T&gt; const T&amp; max(const T&amp; a, const T&amp; b);<br />
4224 T   template&lt;class T, class Compare&gt;<br />
4225       const T&amp; max(const T&amp; a, const T&amp; b, Compare comp);<br />
4226 T   template&lt;class ForwardIterator&gt;<br />
4227       ForwardIterator min_element(ForwardIterator first, ForwardIterator last);<br />
4228 T   template&lt;class ForwardIterator, class Compare&gt;<br />
4229       ForwardIterator min_element(ForwardIterator first, ForwardIterator last,<br />
4230                                 Compare comp);<br />
4231 T   template&lt;class ForwardIterator&gt;<br />
4232       ForwardIterator max_element(ForwardIterator first, ForwardIterator last);<br />
4233 T   template&lt;class ForwardIterator, class Compare&gt;<br />
4234       ForwardIterator max_element(ForwardIterator first, ForwardIterator last,<br />
4235                                 Compare comp);<br />
4236 T   template&lt;class InputIterator1, class InputIterator2&gt;<br />
4237       bool lexicographical_compare<br />
4238           (InputIterator1 first1, InputIterator1 last1,<br />
4239            InputIterator2 first2, InputIterator2 last2);<br />
4240 T   template&lt;class InputIterator1, class InputIterator2, class Compare&gt;<br />
4241       bool lexicographical_compare<br />
4242           (InputIterator1 first1, InputIterator1 last1,<br />
4243            InputIterator2 first2, InputIterator2 last2,<br />
4244            Compare comp);<br />
4245 <br />
4246     // _lib.alg.permutation.generators_, permutations<br />
4247 T   template&lt;class BidirectionalIterator&gt;<br />
4248       bool next_permutation(BidirectionalIterator first,<br />
4249                             BidirectionalIterator last);<br />
4250 T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
4251       bool next_permutation(BidirectionalIterator first,<br />
4252                             BidirectionalIterator last, Compare comp);<br />
4253 T   template&lt;class BidirectionalIterator&gt;<br />
4254       bool prev_permutation(BidirectionalIterator first,<br />
4255                             BidirectionalIterator last);<br />
4256 T   template&lt;class BidirectionalIterator, class Compare&gt;<br />
4257       bool prev_permutation(BidirectionalIterator first,<br />
4258                             BidirectionalIterator last, Compare comp);<br />
4259 <br />
4260 <br />
4261    25.4  C library algorithms                         [lib.alg.c.library]<br />
4262 <br />
4263    1 Header &lt;cstdlib&gt; (partial, Table 2):<br />
4264 <br />
4265                     Table 2--Header &lt;cstdlib&gt; synopsis<br />
4266 <br />
4267                       Functions:   bsearch   qsort<br />
4268 <br />
4269 <br />
4270 X  extern "C" void *bsearch(const void *key, const void *base,<br />
4271                           size_t nmemb, size_t size,<br />
4272                           int (*compar)(const void *, const void *));<br />
4273 X  extern "C++" void *bsearch(const void *key, const void *base,<br />
4274                           size_t nmemb, size_t size,<br />
4275                           int (*compar)(const void *, const void *));<br />
4276 <br />
4277 X  extern "C" void qsort(void* base, size_t nmemb, size_t size,<br />
4278                   int (*compar)(const void*, const void*));<br />
4279 X  extern "C++" void qsort(void* base, size_t nmemb, size_t size,<br />
4280                   int (*compar)(const void*, const void*));<br />
4281 <br />
4282 <br />
4283 <br />
4284    26.2  Complex numbers                            [lib.complex.numbers]<br />
4285 <br />
4286 <br />
4287    26.2.1  Header &lt;complex&gt; synopsis               [lib.complex.synopsis]<br />
4288 <br />
4289 T   template&lt;class T&gt; class complex;<br />
4290 T   template&lt;&gt; class complex&lt;float&gt;;<br />
4291 T   template&lt;&gt; class complex&lt;double&gt;;<br />
4292 T   template&lt;&gt; class complex&lt;long double&gt;;<br />
4293     // _lib.complex.ops_ operators:<br />
4294 T   template&lt;class T&gt;<br />
4295       complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4296 T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4297 T   template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4298 T   template&lt;class T&gt; complex&lt;T&gt; operator-<br />
4299       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4300 T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4301 T   template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4302 T   template&lt;class T&gt; complex&lt;T&gt; operator*<br />
4303       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4304 T   template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4305 T   template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4306 T   template&lt;class T&gt; complex&lt;T&gt; operator/<br />
4307       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4308 T   template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4309 T   template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4310 T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);<br />
4311 T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);<br />
4312 T   template&lt;class T&gt; bool operator==<br />
4313       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4314 T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4315 T   template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4316 T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4317 T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4318 T   template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4319 T   template&lt;class T, class charT, class traits&gt;<br />
4320       basic_istream&lt;charT, traits&gt;&amp;<br />
4321       operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);<br />
4322 <br />
4323 T   template&lt;class T, class charT, class traits&gt;<br />
4324       basic_ostream&lt;charT, traits&gt;&amp;<br />
4325       operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4326     // _lib.complex.value.ops_ values:<br />
4327 T   template&lt;class T&gt; T real(const complex&lt;T&gt;&amp;);<br />
4328 T   template&lt;class T&gt; T imag(const complex&lt;T&gt;&amp;);<br />
4329 <br />
4330 T   template&lt;class T&gt; T abs(const complex&lt;T&gt;&amp;);<br />
4331 T   template&lt;class T&gt; T arg(const complex&lt;T&gt;&amp;);<br />
4332 T   template&lt;class T&gt; T norm(const complex&lt;T&gt;&amp;);<br />
4333 T   template&lt;class T&gt; complex&lt;T&gt; conj(const complex&lt;T&gt;&amp;);<br />
4334 T   template&lt;class T&gt; complex&lt;T&gt; polar(const T&amp;, const T&amp;);<br />
4335     // _lib.complex.transcendentals_ transcendentals:<br />
4336 T   template&lt;class T&gt; complex&lt;T&gt; cos  (const complex&lt;T&gt;&amp;);<br />
4337 T   template&lt;class T&gt; complex&lt;T&gt; cosh (const complex&lt;T&gt;&amp;);<br />
4338 T   template&lt;class T&gt; complex&lt;T&gt; exp  (const complex&lt;T&gt;&amp;);<br />
4339 T   template&lt;class T&gt; complex&lt;T&gt; log  (const complex&lt;T&gt;&amp;);<br />
4340 T   template&lt;class T&gt; complex&lt;T&gt; log10(const complex&lt;T&gt;&amp;);<br />
4341 T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, int);<br />
4342 T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4343 T   template&lt;class T&gt; complex&lt;T&gt; pow(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4344 T   template&lt;class T&gt; complex&lt;T&gt; pow(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4345 T   template&lt;class T&gt; complex&lt;T&gt; sin  (const complex&lt;T&gt;&amp;);<br />
4346 T   template&lt;class T&gt; complex&lt;T&gt; sinh (const complex&lt;T&gt;&amp;);<br />
4347 T   template&lt;class T&gt; complex&lt;T&gt; sqrt (const complex&lt;T&gt;&amp;);<br />
4348 T   template&lt;class T&gt; complex&lt;T&gt; tan  (const complex&lt;T&gt;&amp;);<br />
4349 T   template&lt;class T&gt; complex&lt;T&gt; tanh (const complex&lt;T&gt;&amp;);<br />
4350    }<br />
4351 <br />
4352    26.2.2  Template class complex                           [lib.complex]<br />
4353 <br />
4354     template&lt;class T&gt;<br />
4355 T   class complex {<br />
4356     public:<br />
4357 T     typedef T value_type;<br />
4358 <br />
4359 T     complex(const T&amp; re = T(), const T&amp; im = T());<br />
4360 T     complex(const complex&amp;);<br />
4361 T     template&lt;class X&gt; complex(const complex&lt;X&gt;&amp;);<br />
4362 <br />
4363 T     T real() const;<br />
4364 T     T imag() const;<br />
4365 <br />
4366 T     complex&lt;T&gt;&amp; operator= (const T&amp;);<br />
4367 T     complex&lt;T&gt;&amp; operator+=(const T&amp;);<br />
4368 T     complex&lt;T&gt;&amp; operator-=(const T&amp;);<br />
4369 T     complex&lt;T&gt;&amp; operator*=(const T&amp;);<br />
4370 T     complex&lt;T&gt;&amp; operator/=(const T&amp;);<br />
4371 <br />
4372 T     complex&amp; operator=(const complex&amp;);<br />
4373 T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
4374 T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
4375 T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
4376 T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
4377 T     template&lt;class X&gt; complex&lt;T&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
4378     };<br />
4379 <br />
4380 T   template&lt;class T&gt; complex&lt;T&gt; operator+<br />
4381       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4382 T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4383 T   template&lt;class T&gt; complex&lt;T&gt; operator+(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4384 <br />
4385 T   template&lt;class T&gt; complex&lt;T&gt; operator-<br />
4386       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4387 T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4388 T   template&lt;class T&gt; complex&lt;T&gt; operator-(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4389 <br />
4390 T   template&lt;class T&gt; complex&lt;T&gt; operator*<br />
4391       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4392 T   template&lt;class T&gt; complex&lt;T&gt; operator*(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4393 T   template&lt;class T&gt; complex&lt;T&gt; operator*(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4394 <br />
4395 T   template&lt;class T&gt; complex&lt;T&gt; operator/<br />
4396       (const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4397 T   template&lt;class T&gt; complex&lt;T&gt; operator/(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4398 T   template&lt;class T&gt; complex&lt;T&gt; operator/(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4399 <br />
4400 T   template&lt;class T&gt; complex&lt;T&gt; operator+(const complex&lt;T&gt;&amp;);<br />
4401 T   template&lt;class T&gt; complex&lt;T&gt; operator-(const complex&lt;T&gt;&amp;);<br />
4402 <br />
4403 T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4404 T   template&lt;class T&gt; bool operator==(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4405 T   template&lt;class T&gt; bool operator==(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4406 <br />
4407 T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4408 T   template&lt;class T&gt; bool operator!=(const complex&lt;T&gt;&amp;, const T&amp;);<br />
4409 T   template&lt;class T&gt; bool operator!=(const T&amp;, const complex&lt;T&gt;&amp;);<br />
4410 <br />
4411 T   template&lt;class T, class charT, class traits&gt;<br />
4412       basic_istream&lt;charT, traits&gt;&amp;<br />
4413       operator&gt;&gt;(basic_istream&lt;charT, traits&gt;&amp;, complex&lt;T&gt;&amp;);<br />
4414 <br />
4415 T   template&lt;class T, class charT, class traits&gt;<br />
4416       basic_ostream&lt;charT, traits&gt;&amp;<br />
4417       operator&lt;&lt;(basic_ostream&lt;charT, traits&gt;&amp;, const complex&lt;T&gt;&amp;);<br />
4418 <br />
4419 <br />
4420    26.2.3  complex specializations                  [lib.complex.special]<br />
4421 <br />
4422 T   template&lt;&gt; class complex&lt;float&gt; {<br />
4423     public:<br />
4424 T     typedef float value_type;<br />
4425 <br />
4426 T     complex(float re = 0.0f, float im = 0.0f);<br />
4427 T     explicit complex(const complex&lt;double&gt;&amp;);<br />
4428 T     explicit complex(const complex&lt;long double&gt;&amp;);<br />
4429 T     float real() const;<br />
4430 T     float imag() const;<br />
4431 <br />
4432 T     complex&lt;float&gt;&amp; operator= (float);<br />
4433 T     complex&lt;float&gt;&amp; operator+=(float);<br />
4434 T     complex&lt;float&gt;&amp; operator-=(float);<br />
4435 T     complex&lt;float&gt;&amp; operator*=(float);<br />
4436 T     complex&lt;float&gt;&amp; operator/=(float);<br />
4437 <br />
4438 T     complex&lt;float&gt;&amp; operator=(const complex&lt;float&gt;&amp;);<br />
4439 T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
4440 T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
4441 T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
4442 T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
4443 T     template&lt;class X&gt; complex&lt;float&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
4444     };<br />
4445 T   template&lt;&gt; class complex&lt;double&gt; {<br />
4446     public:<br />
4447 T     typedef double value_type;<br />
4448 <br />
4449 T     complex(double re = 0.0, double im = 0.0);<br />
4450 T     complex(const complex&lt;float&gt;&amp;);<br />
4451 T     explicit complex(const complex&lt;long double&gt;&amp;);<br />
4452 T     double real() const;<br />
4453 T     double imag() const;<br />
4454 <br />
4455 T     complex&lt;double&gt;&amp; operator= (double);<br />
4456 T     complex&lt;double&gt;&amp; operator+=(double);<br />
4457 T     complex&lt;double&gt;&amp; operator-=(double);<br />
4458 T     complex&lt;double&gt;&amp; operator*=(double);<br />
4459 T     complex&lt;double&gt;&amp; operator/=(double);<br />
4460 <br />
4461 T     complex&lt;double&gt;&amp; operator=(const complex&lt;double&gt;&amp;);<br />
4462 T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
4463 T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
4464 T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
4465 T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
4466 T     template&lt;class X&gt; complex&lt;double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
4467     };<br />
4468 <br />
4469 T   template&lt;&gt; class complex&lt;long double&gt; {<br />
4470     public:<br />
4471 T     typedef long double value_type;<br />
4472 <br />
4473 T     complex(long double re = 0.0L, long double im = 0.0L);<br />
4474 T     complex(const complex&lt;float&gt;&amp;);<br />
4475 T     complex(const complex&lt;double&gt;&amp;);<br />
4476 T     long double real() const;<br />
4477 T     long double imag() const;<br />
4478 <br />
4479 T     complex&lt;long double&gt;&amp; operator=(const complex&lt;long double&gt;&amp;);<br />
4480 T     complex&lt;long double&gt;&amp; operator= (long double);<br />
4481 T     complex&lt;long double&gt;&amp; operator+=(long double);<br />
4482 T     complex&lt;long double&gt;&amp; operator-=(long double);<br />
4483 T     complex&lt;long double&gt;&amp; operator*=(long double);<br />
4484 T     complex&lt;long double&gt;&amp; operator/=(long double);<br />
4485 <br />
4486 T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator= (const complex&lt;X&gt;&amp;);<br />
4487 T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator+=(const complex&lt;X&gt;&amp;);<br />
4488 T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator-=(const complex&lt;X&gt;&amp;);<br />
4489 T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator*=(const complex&lt;X&gt;&amp;);<br />
4490 T     template&lt;class X&gt; complex&lt;long double&gt;&amp; operator/=(const complex&lt;X&gt;&amp;);<br />
4491     };<br />
4492 <br />
4493    26.3  Numeric arrays                                    [lib.numarray]<br />
4494 <br />
4495    26.3.1  Header &lt;valarray&gt; synopsis             [lib.valarray.synopsis]<br />
4496 <br />
4497 T   template&lt;class T&gt; class valarray;         // An array of type T<br />
4498 T   class slice;<br />
4499 T   template&lt;class T&gt; class slice_array;<br />
4500 T   class gslice;<br />
4501 T   template&lt;class T&gt; class gslice_array;<br />
4502 T   template&lt;class T&gt; class mask_array;       // a masked array<br />
4503 T   template&lt;class T&gt; class indirect_array;   // an indirected array<br />
4504 <br />
4505 T   template&lt;class T&gt; valarray&lt;T&gt; operator*<br />
4506       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4507 T   template&lt;class T&gt; valarray&lt;T&gt; operator* (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4508 T   template&lt;class T&gt; valarray&lt;T&gt; operator* (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4509 T   template&lt;class T&gt; valarray&lt;T&gt; operator/<br />
4510       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4511 T   template&lt;class T&gt; valarray&lt;T&gt; operator/ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4512 T   template&lt;class T&gt; valarray&lt;T&gt; operator/ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4513 T   template&lt;class T&gt; valarray&lt;T&gt; operator%<br />
4514       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4515 T   template&lt;class T&gt; valarray&lt;T&gt; operator% (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4516 T   template&lt;class T&gt; valarray&lt;T&gt; operator% (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4517 T   template&lt;class T&gt; valarray&lt;T&gt; operator+<br />
4518       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4519 T   template&lt;class T&gt; valarray&lt;T&gt; operator+ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4520 T   template&lt;class T&gt; valarray&lt;T&gt; operator+ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4521 T   template&lt;class T&gt; valarray&lt;T&gt; operator-<br />
4522       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4523 T   template&lt;class T&gt; valarray&lt;T&gt; operator- (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4524 T   template&lt;class T&gt; valarray&lt;T&gt; operator- (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4525 T   template&lt;class T&gt; valarray&lt;T&gt; operator^<br />
4526       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4527 T   template&lt;class T&gt; valarray&lt;T&gt; operator^ (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4528 T   template&lt;class T&gt; valarray&lt;T&gt; operator^ (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4529 T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp;<br />
4530       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4531 T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4532 T   template&lt;class T&gt; valarray&lt;T&gt; operator&amp; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4533 T   template&lt;class T&gt; valarray&lt;T&gt; operator|<br />
4534       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4535 T   template&lt;class T&gt; valarray&lt;T&gt; operator| (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4536 T   template&lt;class T&gt; valarray&lt;T&gt; operator| (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4537 T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;<br />
4538       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4539 T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4540 T   template&lt;class T&gt; valarray&lt;T&gt; operator&lt;&lt;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4541 T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;<br />
4542       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4543 T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4544 T   template&lt;class T&gt; valarray&lt;T&gt; operator&gt;&gt;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4545 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;<br />
4546       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4547 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4548 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&amp;&amp;(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4549 T   template&lt;class T&gt; valarray&lt;bool&gt; operator||<br />
4550       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4551 T   template&lt;class T&gt; valarray&lt;bool&gt; operator||(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4552 T   template&lt;class T&gt; valarray&lt;bool&gt; operator||(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4553 <br />
4554 T   template&lt;class T&gt;<br />
4555       valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4556 T   template&lt;class T&gt; valarray&lt;bool&gt; operator==(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4557 T   template&lt;class T&gt; valarray&lt;bool&gt; operator==(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4558 T   template&lt;class T&gt;<br />
4559       valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4560 T   template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4561 T   template&lt;class T&gt; valarray&lt;bool&gt; operator!=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4562 T   template&lt;class T&gt;<br />
4563       valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4564 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4565 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4566 T   template&lt;class T&gt;<br />
4567       valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4568 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4569 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt; (const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4570 T   template&lt;class T&gt;<br />
4571       valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4572 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4573 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&lt;=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4574 T   template&lt;class T&gt;<br />
4575       valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4576 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4577 T   template&lt;class T&gt; valarray&lt;bool&gt; operator&gt;=(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4578 T   template&lt;class T&gt; valarray&lt;T&gt; abs  (const valarray&lt;T&gt;&amp;);<br />
4579 T   template&lt;class T&gt; valarray&lt;T&gt; acos (const valarray&lt;T&gt;&amp;);<br />
4580 T   template&lt;class T&gt; valarray&lt;T&gt; asin (const valarray&lt;T&gt;&amp;);<br />
4581 T   template&lt;class T&gt; valarray&lt;T&gt; atan (const valarray&lt;T&gt;&amp;);<br />
4582 T   template&lt;class T&gt; valarray&lt;T&gt; atan2<br />
4583       (const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4584 T   template&lt;class T&gt; valarray&lt;T&gt; atan2(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4585 T   template&lt;class T&gt; valarray&lt;T&gt; atan2(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4586 T   template&lt;class T&gt; valarray&lt;T&gt; cos  (const valarray&lt;T&gt;&amp;);<br />
4587 T   template&lt;class T&gt; valarray&lt;T&gt; cosh (const valarray&lt;T&gt;&amp;);<br />
4588 T   template&lt;class T&gt; valarray&lt;T&gt; exp  (const valarray&lt;T&gt;&amp;);<br />
4589 T   template&lt;class T&gt; valarray&lt;T&gt; log  (const valarray&lt;T&gt;&amp;);<br />
4590 T   template&lt;class T&gt; valarray&lt;T&gt; log10(const valarray&lt;T&gt;&amp;);<br />
4591 T   template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const valarray&lt;T&gt;&amp;);<br />
4592 T   template&lt;class T&gt; valarray&lt;T&gt; pow(const valarray&lt;T&gt;&amp;, const T&amp;);<br />
4593 T   template&lt;class T&gt; valarray&lt;T&gt; pow(const T&amp;, const valarray&lt;T&gt;&amp;);<br />
4594 T   template&lt;class T&gt; valarray&lt;T&gt; sin  (const valarray&lt;T&gt;&amp;);<br />
4595 T   template&lt;class T&gt; valarray&lt;T&gt; sinh (const valarray&lt;T&gt;&amp;);<br />
4596 T   template&lt;class T&gt; valarray&lt;T&gt; sqrt (const valarray&lt;T&gt;&amp;);<br />
4597 T   template&lt;class T&gt; valarray&lt;T&gt; tan  (const valarray&lt;T&gt;&amp;);<br />
4598 T   template&lt;class T&gt; valarray&lt;T&gt; tanh (const valarray&lt;T&gt;&amp;);<br />
4599    }<br />
4600 <br />
4601 <br />
4602    26.3.2  Template class valarray                [lib.template.valarray]<br />
4603 <br />
4604 T   template&lt;class T&gt; class valarray {<br />
4605     public:<br />
4606 T     typedef T value_type;<br />
4607 <br />
4608       // _lib.valarray.cons_ construct/destroy:<br />
4609 T     valarray();<br />
4610 T     explicit valarray(size_t);<br />
4611 T     valarray(const T&amp;, size_t);<br />
4612 T     valarray(const T*, size_t);<br />
4613 T     valarray(const valarray&amp;);<br />
4614 T     valarray(const slice_array&lt;T&gt;&amp;);<br />
4615 T     valarray(const gslice_array&lt;T&gt;&amp;);<br />
4616 T     valarray(const mask_array&lt;T&gt;&amp;);<br />
4617 T     valarray(const indirect_array&lt;T&gt;&amp;);<br />
4618 T    ~valarray();<br />
4619 <br />
4620       // _lib.valarray.assign_ assignment:<br />
4621 T     valarray&lt;T&gt;&amp; operator=(const valarray&lt;T&gt;&amp;);<br />
4622 T     valarray&lt;T&gt;&amp; operator=(const T&amp;);<br />
4623 T     valarray&lt;T&gt;&amp; operator=(const slice_array&lt;T&gt;&amp;);<br />
4624 T     valarray&lt;T&gt;&amp; operator=(const gslice_array&lt;T&gt;&amp;);<br />
4625 T     valarray&lt;T&gt;&amp; operator=(const mask_array&lt;T&gt;&amp;);<br />
4626 T     valarray&lt;T&gt;&amp; operator=(const indirect_array&lt;T&gt;&amp;);<br />
4627       // _lib.valarray.access_ element access:<br />
4628 T     T                 operator[](size_t) const;<br />
4629 T     T&amp;                operator[](size_t);<br />
4630       // _lib.valarray.sub_ subset operations:<br />
4631 T     valarray&lt;T&gt;       operator[](slice) const;<br />
4632 T     slice_array&lt;T&gt;    operator[](slice);<br />
4633 T     valarray&lt;T&gt;       operator[](const gslice&amp;) const;<br />
4634 T     gslice_array&lt;T&gt;   operator[](const gslice&amp;);<br />
4635 T     valarray&lt;T&gt;       operator[](const valarray&lt;bool&gt;&amp;) const;<br />
4636 T     mask_array&lt;T&gt;     operator[](const valarray&lt;bool&gt;&amp;);<br />
4637 T     valarray&lt;T&gt;       operator[](const valarray&lt;size_t&gt;&amp;) const;<br />
4638 T     indirect_array&lt;T&gt; operator[](const valarray&lt;size_t&gt;&amp;);<br />
4639       // _lib.valarray.unary_ unary operators:<br />
4640 T     valarray&lt;T&gt; operator+() const;<br />
4641 T     valarray&lt;T&gt; operator-() const;<br />
4642 T     valarray&lt;T&gt; operator~() const;<br />
4643 T     valarray&lt;T&gt; operator!() const;<br />
4644       // _lib.valarray.cassign_ computed assignment:<br />
4645 T     valarray&lt;T&gt;&amp; operator*= (const T&amp;);<br />
4646 T     valarray&lt;T&gt;&amp; operator/= (const T&amp;);<br />
4647 T     valarray&lt;T&gt;&amp; operator%= (const T&amp;);<br />
4648 T     valarray&lt;T&gt;&amp; operator+= (const T&amp;);<br />
4649 T     valarray&lt;T&gt;&amp; operator-= (const T&amp;);<br />
4650 T     valarray&lt;T&gt;&amp; operator^= (const T&amp;);<br />
4651 T     valarray&lt;T&gt;&amp; operator&amp;= (const T&amp;);<br />
4652 T     valarray&lt;T&gt;&amp; operator|= (const T&amp;);<br />
4653 T     valarray&lt;T&gt;&amp; operator&lt;&lt;=(const T&amp;);<br />
4654 T     valarray&lt;T&gt;&amp; operator&gt;&gt;=(const T&amp;);<br />
4655 T     valarray&lt;T&gt;&amp; operator*= (const valarray&lt;T&gt;&amp;);<br />
4656 T     valarray&lt;T&gt;&amp; operator/= (const valarray&lt;T&gt;&amp;);<br />
4657 T     valarray&lt;T&gt;&amp; operator%= (const valarray&lt;T&gt;&amp;);<br />
4658 T     valarray&lt;T&gt;&amp; operator+= (const valarray&lt;T&gt;&amp;);<br />
4659 T     valarray&lt;T&gt;&amp; operator-= (const valarray&lt;T&gt;&amp;);<br />
4660 T     valarray&lt;T&gt;&amp; operator^= (const valarray&lt;T&gt;&amp;);<br />
4661 T     valarray&lt;T&gt;&amp; operator|= (const valarray&lt;T&gt;&amp;);<br />
4662 T     valarray&lt;T&gt;&amp; operator&amp;= (const valarray&lt;T&gt;&amp;);<br />
4663 T     valarray&lt;T&gt;&amp; operator&lt;&lt;=(const valarray&lt;T&gt;&amp;);<br />
4664 T     valarray&lt;T&gt;&amp; operator&gt;&gt;=(const valarray&lt;T&gt;&amp;);<br />
4665       // _lib.valarray.members_ member functions:<br />
4666 T     size_t size() const;<br />
4667 T     T    sum() const;<br />
4668 T     T    min() const;<br />
4669 T     T    max() const;<br />
4670 <br />
4671 T     valarray&lt;T&gt; shift (int) const;<br />
4672 T     valarray&lt;T&gt; cshift(int) const;<br />
4673 T     valarray&lt;T&gt; apply(T func(T)) const;<br />
4674 T     valarray&lt;T&gt; apply(T func(const T&amp;)) const;<br />
4675 T     void resize(size_t sz, T c = T());<br />
4676     };<br />
4677    }<br />
4678 <br />
4679 <br />
4680 <br />
4681    26.3.4  Class slice                                  [lib.class.slice]<br />
4682 <br />
4683 T   class slice {<br />
4684     public:<br />
4685 T     slice();<br />
4686 T     slice(size_t, size_t, size_t);<br />
4687 <br />
4688 T     size_t start() const;<br />
4689 T     size_t size() const;<br />
4690 T     size_t stride() const;<br />
4691     };<br />
4692    }<br />
4693 <br />
4694 <br />
4695 <br />
4696    26.3.5  Template class slice_array          [lib.template.slice.array]<br />
4697 <br />
4698 T   template &lt;class T&gt; class slice_array {<br />
4699     public:<br />
4700 T     typedef T value_type;<br />
4701 <br />
4702 T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
4703 T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
4704 T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
4705 T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
4706 T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
4707 T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
4708 T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
4709 T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
4710 T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
4711 T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
4712 T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
4713 T     void operator=(const T&amp;);<br />
4714 T    ~slice_array();<br />
4715     private:<br />
4716 T     slice_array();<br />
4717 T     slice_array(const slice_array&amp;);<br />
4718 T     slice_array&amp; operator=(const slice_array&amp;);<br />
4719     };<br />
4720    }<br />
4721 <br />
4722 <br />
4723 <br />
4724    26.3.6  The gslice class                            [lib.class.gslice]<br />
4725 <br />
4726 T   class gslice {<br />
4727     public:<br />
4728 T     gslice();<br />
4729 T     gslice(size_t s, const valarray&lt;size_t&gt;&amp; l, const valarray&lt;size_t&gt;&amp; d);<br />
4730 <br />
4731 T     size_t           start() const;<br />
4732 T     valarray&lt;size_t&gt; size() const;<br />
4733 T     valarray&lt;size_t&gt; stride() const;<br />
4734     };<br />
4735 <br />
4736 <br />
4737    26.3.7  Template class gslice_array        [lib.template.gslice.array]<br />
4738 <br />
4739 T   template &lt;class T&gt; class gslice_array {<br />
4740     public:<br />
4741 T     typedef T value_type;<br />
4742 <br />
4743 T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
4744 T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
4745 T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
4746 T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
4747 T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
4748 T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
4749 T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
4750 T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
4751 T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
4752 T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
4753 T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
4754 T     void operator=(const T&amp;);<br />
4755 T    ~gslice_array();<br />
4756     private:<br />
4757 T     gslice_array();<br />
4758 T     gslice_array(const gslice_array&amp;);<br />
4759 T     gslice_array&amp; operator=(const gslice_array&amp;);<br />
4760     };<br />
4761 <br />
4762 <br />
4763    26.3.8  Template class mask_array            [lib.template.mask.array]<br />
4764 <br />
4765 T   template &lt;class T&gt; class mask_array {<br />
4766     public:<br />
4767 T     typedef T value_type;<br />
4768 <br />
4769 T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
4770 T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
4771 T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
4772 T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
4773 T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
4774 T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
4775 T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
4776 T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
4777 T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
4778 T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
4779 T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
4780 T     void operator=(const T&amp;);<br />
4781 T    ~mask_array();<br />
4782     private:<br />
4783 T     mask_array();<br />
4784 T     mask_array(const mask_array&amp;);<br />
4785 T     mask_array&amp; operator=(const mask_array&amp;);<br />
4786       //  remainder implementation defined<br />
4787     };<br />
4788 <br />
4789 <br />
4790    26.3.9  Template class                   [lib.template.indirect.array]<br />
4791        indirect_array<br />
4792 <br />
4793 T   template &lt;class T&gt; class indirect_array {<br />
4794     public:<br />
4795 T     typedef T value_type;<br />
4796 <br />
4797 T     void operator=  (const valarray&lt;T&gt;&amp;) const;<br />
4798 T     void operator*= (const valarray&lt;T&gt;&amp;) const;<br />
4799 T     void operator/= (const valarray&lt;T&gt;&amp;) const;<br />
4800 T     void operator%= (const valarray&lt;T&gt;&amp;) const;<br />
4801 T     void operator+= (const valarray&lt;T&gt;&amp;) const;<br />
4802 T     void operator-= (const valarray&lt;T&gt;&amp;) const;<br />
4803 T     void operator^= (const valarray&lt;T&gt;&amp;) const;<br />
4804 T     void operator&amp;= (const valarray&lt;T&gt;&amp;) const;<br />
4805 T     void operator|= (const valarray&lt;T&gt;&amp;) const;<br />
4806 T     void operator&lt;&lt;=(const valarray&lt;T&gt;&amp;) const;<br />
4807 T     void operator&gt;&gt;=(const valarray&lt;T&gt;&amp;) const;<br />
4808 T     void operator=(const T&amp;);<br />
4809 T    ~indirect_array();<br />
4810     private:<br />
4811 T     indirect_array();<br />
4812 T     indirect_array(const indirect_array&amp;);<br />
4813 T     indirect_array&amp; operator=(const indirect_array&amp;);<br />
4814       //  remainder implementation defined<br />
4815     };<br />
4816 <br />
4817    26.4  Generalized numeric operations                 [lib.numeric.ops]<br />
4818 <br />
4819    Header &lt;numeric&gt; synopsis<br />
4820 <br />
4821 T   template &lt;class InputIterator, class T&gt;<br />
4822       T accumulate(InputIterator first, InputIterator last, T init);<br />
4823 <br />
4824 T   template &lt;class InputIterator, class T, class BinaryOperation&gt;<br />
4825       T accumulate(InputIterator first, InputIterator last, T init,<br />
4826                    BinaryOperation binary_op);<br />
4827 <br />
4828 T   template &lt;class InputIterator1, class InputIterator2, class T&gt;<br />
4829       T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
4830                       InputIterator2 first2, T init);<br />
4831 <br />
4832 T   template &lt;class InputIterator1, class InputIterator2, class T,<br />
4833               class BinaryOperation1, class BinaryOperation2&gt;<br />
4834       T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
4835                       InputIterator2 first2, T init,<br />
4836                       BinaryOperation1 binary_op1,<br />
4837                       BinaryOperation2 binary_op2);<br />
4838 <br />
4839 T   template &lt;class InputIterator, class OutputIterator&gt;<br />
4840       OutputIterator partial_sum(InputIterator first,<br />
4841                                  InputIterator last,<br />
4842                                  OutputIterator result);<br />
4843 <br />
4844 T   template &lt;class InputIterator, class OutputIterator,<br />
4845               class BinaryOperation&gt;<br />
4846       OutputIterator partial_sum(InputIterator first,<br />
4847                                  InputIterator last,<br />
4848                                  OutputIterator result,<br />
4849                                  BinaryOperation binary_op);<br />
4850 <br />
4851 T   template &lt;class InputIterator, class OutputIterator&gt;<br />
4852       OutputIterator adjacent_difference(InputIterator first,<br />
4853                                          InputIterator last,<br />
4854                                          OutputIterator result);<br />
4855 <br />
4856 T   template &lt;class InputIterator, class OutputIterator,<br />
4857               class BinaryOperation&gt;<br />
4858       OutputIterator adjacent_difference(InputIterator first,<br />
4859                                          InputIterator last,<br />
4860                                          OutputIterator result,<br />
4861                                          BinaryOperation binary_op);<br />
4862 <br />
4863 <br />
4864    26.5  C Library                                           [lib.c.math]<br />
4865 <br />
4866                      Table 2--Header &lt;cmath&gt; synopsis<br />
4867 X               Macro:   HUGE_VAL<br />
4868                 Functions:<br />
4869 X               acos     cos        fmod    modf   tan<br />
4870 X               asin     cosh       frexp   pow    tanh<br />
4871 X               atan     exp        ldexp   sin<br />
4872 X               atan2    fabs       log     sinh<br />
4873 X               ceil     floor      log10   sqrt<br />
4874 <br />
4875                     Table 3--Header &lt;cstdlib&gt; synopsis<br />
4876 X                     Macros:   RAND_MAX<br />
4877 X                     Types:    div_t      ldiv_t<br />
4878                       Functions:<br />
4879 X                     abs       labs       srand<br />
4880 X                     div       ldiv       rand<br />
4881 <br />
4882 X  long   abs(long);               // labs()<br />
4883 X  ldiv_t div(long, long);         // ldiv()<br />
4884 <br />
4885 X  float abs  (float);<br />
4886 X  float acos (float);<br />
4887 X  float asin (float);<br />
4888 X  float atan (float);<br />
4889 X  float atan2(float, float);<br />
4890 X  float ceil (float);<br />
4891 X  float cos  (float);<br />
4892 X  float cosh (float);<br />
4893 X  float exp  (float);<br />
4894 X  float fabs (float);<br />
4895 X  float floor(float);<br />
4896 X  float fmod (float, float);<br />
4897 X  float frexp(float, int*);<br />
4898 X  float ldexp(float, int);<br />
4899 X  float log  (float);<br />
4900 X  float log10(float);<br />
4901 X  float modf (float, float*);<br />
4902 X  float pow  (float, float);<br />
4903 X  float pow  (float, int);<br />
4904 X  float sin  (float);<br />
4905 X  float sinh (float);<br />
4906 X  float sqrt (float);<br />
4907 X  float tan  (float);<br />
4908 X  float tanh (float);<br />
4909 <br />
4910 X  double abs(double);            // fabs()<br />
4911 X  double pow(double, int);<br />
4912 <br />
4913 X  long double abs  (long double);<br />
4914 X  long double acos (long double);<br />
4915 X  long double asin (long double);<br />
4916 X  long double atan (long double);<br />
4917 X  long double atan2(long double, long double);<br />
4918 X  long double ceil (long double);<br />
4919 X  long double cos  (long double);<br />
4920 X  long double cosh (long double);<br />
4921 X  long double exp  (long double);<br />
4922 X  long double fabs (long double);<br />
4923 X  long double floor(long double);<br />
4924 X  long double fmod (long double, long double);<br />
4925 X  long double frexp(long double, int*);<br />
4926 X  long double ldexp(long double, int);<br />
4927 X  long double log  (long double);<br />
4928 X  long double log10(long double);<br />
4929 X  long double modf (long double, long double*);<br />
4930 X  long double pow  (long double, long double);<br />
4931 X  long double pow  (long double, int);<br />
4932 X  long double sin  (long double);<br />
4933 X  long double sinh (long double);<br />
4934 X  long double sqrt (long double);<br />
4935 X  long double tan  (long double);<br />
4936 X  long double tanh (long double);<br />
4937 <br />
4938    Header &lt;iosfwd&gt; synopsis<br />
4939 <br />
4940 X   template&lt;class charT&gt; class char_traits;<br />
4941 X   template&lt;&gt; class char_traits&lt;char&gt;;<br />
4942 X   template&lt;&gt; class char_traits&lt;wchar_t&gt;;<br />
4943 X   template&lt;class T&gt; class allocator;<br />
4944 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4945       class basic_ios;<br />
4946 <br />
4947 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4948       class basic_streambuf;<br />
4949 <br />
4950 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4951       class basic_istream;<br />
4952 <br />
4953 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4954       class basic_ostream;<br />
4955 <br />
4956 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4957       class basic_iostream;<br />
4958 <br />
4959 X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
4960               class Allocator = allocator&lt;charT&gt; &gt;<br />
4961       class basic_stringbuf;<br />
4962 <br />
4963 X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
4964               class Allocator = allocator&lt;charT&gt; &gt;<br />
4965       class basic_istringstream;<br />
4966 <br />
4967 X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
4968               class Allocator = allocator&lt;charT&gt; &gt;<br />
4969       class basic_ostringstream;<br />
4970 <br />
4971 X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
4972               class Allocator = allocator&lt;charT&gt; &gt;<br />
4973       class basic_stringstream;<br />
4974 <br />
4975 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4976       class basic_filebuf;<br />
4977 <br />
4978 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4979       class basic_ifstream;<br />
4980 <br />
4981 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4982       class basic_ofstream;<br />
4983 <br />
4984 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4985       class basic_fstream;<br />
4986 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4987       class istreambuf_iterator;<br />
4988 <br />
4989 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
4990       class ostreambuf_iterator;<br />
4991 X   typedef basic_ios&lt;char&gt;       ios;<br />
4992 X   typedef basic_ios&lt;wchar_t&gt;    wios;<br />
4993 X   typedef basic_streambuf&lt;char&gt; streambuf;<br />
4994 X   typedef basic_istream&lt;char&gt;   istream;<br />
4995 X   typedef basic_ostream&lt;char&gt;   ostream;<br />
4996 X   typedef basic_iostream&lt;char&gt;  iostream;<br />
4997 X   typedef basic_stringbuf&lt;char&gt;     stringbuf;<br />
4998 X   typedef basic_istringstream&lt;char&gt; istringstream;<br />
4999 X   typedef basic_ostringstream&lt;char&gt; ostringstream;<br />
5000 X   typedef basic_stringstream&lt;char&gt;  stringstream;<br />
5001 X   typedef basic_filebuf&lt;char&gt;  filebuf;<br />
5002 X   typedef basic_ifstream&lt;char&gt; ifstream;<br />
5003 X   typedef basic_ofstream&lt;char&gt; ofstream;<br />
5004 X   typedef basic_fstream&lt;char&gt;  fstream;<br />
5005 X   typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;<br />
5006 X   typedef basic_istream&lt;wchar_t&gt;   wistream;<br />
5007 X   typedef basic_ostream&lt;wchar_t&gt;   wostream;<br />
5008 X   typedef basic_iostream&lt;wchar_t&gt;  wiostream;<br />
5009 X   typedef basic_stringbuf&lt;wchar_t&gt;     wstringbuf;<br />
5010 X   typedef basic_istringstream&lt;wchar_t&gt; wistringstream;<br />
5011 X   typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;<br />
5012 X   typedef basic_stringstream&lt;wchar_t&gt;  wstringstream;<br />
5013 <br />
5014 X   typedef basic_filebuf&lt;wchar_t&gt;  wfilebuf;<br />
5015 X   typedef basic_ifstream&lt;wchar_t&gt; wifstream;<br />
5016 X   typedef basic_ofstream&lt;wchar_t&gt; wofstream;<br />
5017 X   typedef basic_fstream&lt;wchar_t&gt;  wfstream;<br />
5018 X   template &lt;class state&gt; class fpos;<br />
5019 X   typedef fpos&lt;char_traits&lt;char&gt;::state_type&gt;    streampos;<br />
5020 X   typedef fpos&lt;char_traits&lt;wchar_t&gt;::state_type&gt; wstreampos;<br />
5021 <br />
5022    27.3  Standard iostream objects                 [lib.iostream.objects]<br />
5023 <br />
5024    Header &lt;iostream&gt; synopsis<br />
5025 <br />
5026 T  [must also include &lt;istream&gt; and &lt;ostream&gt;]<br />
5027 T   extern istream cin;<br />
5028 T   extern ostream cout;<br />
5029 T   extern ostream cerr;<br />
5030 T   extern ostream clog;<br />
5031 <br />
5032 T   extern wistream wcin;<br />
5033 T   extern wostream wcout;<br />
5034 T   extern wostream wcerr;<br />
5035 T   extern wostream wclog;<br />
5036 <br />
5037    27.4  Iostreams base classes                      [lib.iostreams.base]<br />
5038 <br />
5039    Header &lt;ios&gt; synopsis<br />
5040 <br />
5041    #include &lt;iosfwd&gt;<br />
5042 <br />
5043 T   typedef OFF_T  streamoff;<br />
5044 T   typedef SZ_T streamsize;<br />
5045 T   template &lt;class stateT&gt; class fpos;<br />
5046 <br />
5047     class ios_base;<br />
5048     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5049       class basic_ios;<br />
5050    // _lib.std.ios.manip_, manipulators:<br />
5051 T   ios_base&amp; boolalpha  (ios_base&amp; str);<br />
5052 T   ios_base&amp; noboolalpha(ios_base&amp; str);<br />
5053 T   ios_base&amp; showbase   (ios_base&amp; str);<br />
5054 T   ios_base&amp; noshowbase (ios_base&amp; str);<br />
5055 T   ios_base&amp; showpoint  (ios_base&amp; str);<br />
5056 T   ios_base&amp; noshowpoint(ios_base&amp; str);<br />
5057 T   ios_base&amp; showpos    (ios_base&amp; str);<br />
5058 T   ios_base&amp; noshowpos  (ios_base&amp; str);<br />
5059 T   ios_base&amp; skipws     (ios_base&amp; str);<br />
5060 T   ios_base&amp; noskipws   (ios_base&amp; str);<br />
5061 T   ios_base&amp; nouppercase(ios_base&amp; str);<br />
5062 T   ios_base&amp; uppercase  (ios_base&amp; str);<br />
5063 M   ios_base&amp; unitbuf    (ios_base&amp; str);<br />
5064 M   ios_base&amp; nounitbuf  (ios_base&amp; str);<br />
5065    // _lib.adjustfield.manip_ adjustfield:<br />
5066 T   ios_base&amp; internal   (ios_base&amp; str);<br />
5067 T   ios_base&amp; left       (ios_base&amp; str);<br />
5068 T   ios_base&amp; right      (ios_base&amp; str);<br />
5069    // _lib.basefield.manip_ basefield:<br />
5070 T   ios_base&amp; dec        (ios_base&amp; str);<br />
5071 T   ios_base&amp; hex        (ios_base&amp; str);<br />
5072 T   ios_base&amp; oct        (ios_base&amp; str);<br />
5073 <br />
5074    // _lib.floatfield.manip_ floatfield:<br />
5075 T   ios_base&amp; fixed      (ios_base&amp; str);<br />
5076 T   ios_base&amp; scientific (ios_base&amp; str);<br />
5077 <br />
5078 <br />
5079    27.4.2  Class ios_base                                  [lib.ios.base]<br />
5080 <br />
5081 T   class ios_base {<br />
5082     public:<br />
5083       class failure;<br />
5084 T     typedef T1 fmtflags;<br />
5085 T     static const fmtflags boolalpha;<br />
5086 T     static const fmtflags dec;<br />
5087 T     static const fmtflags fixed;<br />
5088 T     static const fmtflags hex;<br />
5089 T     static const fmtflags internal;<br />
5090 T     static const fmtflags left;<br />
5091 T     static const fmtflags oct;<br />
5092 T     static const fmtflags right;<br />
5093 T     static const fmtflags scientific;<br />
5094 T     static const fmtflags showbase;<br />
5095 T     static const fmtflags showpoint;<br />
5096 T     static const fmtflags showpos;<br />
5097 T     static const fmtflags skipws;<br />
5098 X     static const fmtflags unitbuf;<br />
5099 T     static const fmtflags uppercase;<br />
5100 T     static const fmtflags adjustfield;<br />
5101 T     static const fmtflags basefield;<br />
5102 T     static const fmtflags floatfield;<br />
5103 <br />
5104       typedef T2 iostate;<br />
5105 T     static const iostate badbit;<br />
5106 T     static const iostate eofbit;<br />
5107 T     static const iostate failbit;<br />
5108 T     static const iostate goodbit;<br />
5109 T     typedef T3 openmode;<br />
5110 T     static const openmode app;<br />
5111 T     static const openmode ate;<br />
5112 T     static const openmode binary;<br />
5113 T     static const openmode in;<br />
5114 T     static const openmode out;<br />
5115 T     static const openmode trunc;<br />
5116 T     typedef T4 seekdir;<br />
5117 T     static const seekdir beg;<br />
5118 T     static const seekdir cur;<br />
5119 T     static const seekdir end;<br />
5120 T     class Init;<br />
5121       // _lib.fmtflags.state_ fmtflags state:<br />
5122 T     fmtflags flags() const;<br />
5123 T     fmtflags flags(fmtflags fmtfl);<br />
5124 T     fmtflags setf(fmtflags fmtfl);<br />
5125 T     fmtflags setf(fmtflags fmtfl, fmtflags mask);<br />
5126 T     void unsetf(fmtflags mask);<br />
5127 T     streamsize precision() const;<br />
5128 T     streamsize precision(streamsize prec);<br />
5129 T     streamsize width() const;<br />
5130 T     streamsize width(streamsize wide);<br />
5131       // _lib.ios.base.locales_ locales:<br />
5132 T     locale imbue(const locale&amp; loc);<br />
5133 T     locale getloc() const;<br />
5134       // _lib.ios.base.storage_ storage:<br />
5135 T     static int xalloc();<br />
5136 T     long&amp;  iword(int index);<br />
5137 T     void*&amp; pword(int index);<br />
5138       // destructor<br />
5139 T     virtual ~ios_base();<br />
5140       // _lib.ios.base.callback_ callbacks;<br />
5141 T     enum event { erase_event, imbue_event, copyfmt_event };<br />
5142 T     typedef void (*event_callback)(event, ios_base&amp;, int index);<br />
5143 T     void register_callback(event_call_back fn, int index);<br />
5144 T     static bool sync_with_stdio(bool sync = true);<br />
5145     protected:<br />
5146 T     ios_base();<br />
5147     };<br />
5148 <br />
5149    27.4.2.1.1  Class ios_base::failure                 [lib.ios::failure]<br />
5150 <br />
5151 T   class ios_base::failure : public exception {<br />
5152     public:<br />
5153 T     explicit failure(const string&amp; msg);<br />
5154 T     virtual ~failure();<br />
5155 T     virtual const char* what() const throw();<br />
5156     };<br />
5157 <br />
5158 <br />
5159    27.4.2.1.6  Class ios_base::Init                       [lib.ios::Init]<br />
5160 <br />
5161 T   class ios_base::Init {<br />
5162     public:<br />
5163 T     Init();<br />
5164 T    ~Init();<br />
5165     };<br />
5166 <br />
5167 <br />
5168    27.4.3  Template class fpos                                 [lib.fpos]<br />
5169 <br />
5170 X   template &lt;class stateT&gt; class fpos {<br />
5171     public:<br />
5172       // _lib.fpos.members_ Members<br />
5173 T     stateT state() const;<br />
5174 T     void state(stateT);<br />
5175     private;<br />
5176 T     stateT st; // exposition only<br />
5177     };<br />
5178 <br />
5179 <br />
5180    27.4.5  Template class basic_ios                             [lib.ios]<br />
5181 <br />
5182     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5183 X   class basic_ios : public ios_base {<br />
5184     public:<br />
5185 <br />
5186       // Types:<br />
5187 T     typedef charT                     char_type;<br />
5188 T     typedef typename traits::int_type int_type;<br />
5189 T     typedef typename traits::pos_type pos_type;<br />
5190 T     typedef typename traits::off_type off_type;<br />
5191 T     typedef traits                    traits_type;<br />
5192 T     operator void*() const<br />
5193 T     bool operator!() const<br />
5194 T     iostate rdstate() const;<br />
5195 T     void clear(iostate state = goodbit);<br />
5196 T     void setstate(iostate state);<br />
5197 T     bool good() const;<br />
5198 T     bool eof()  const;<br />
5199 T     bool fail() const;<br />
5200 T     bool bad()  const;<br />
5201 T     iostate exceptions() const;<br />
5202 T     void exceptions(iostate except);<br />
5203       // _lib.basic.ios.cons_ Constructor/destructor:<br />
5204 T     explicit basic_ios(basic_streambuf&lt;charT,traits&gt;* sb);<br />
5205 T     virtual ~basic_ios();<br />
5206       // _lib.basic.ios.members_ Members:<br />
5207 T     basic_ostream&lt;charT,traits&gt;* tie() const;<br />
5208 T     basic_ostream&lt;charT,traits&gt;* tie(basic_ostream&lt;charT,traits&gt;* tiestr);<br />
5209 T     basic_streambuf&lt;charT,traits&gt;* rdbuf() const;<br />
5210 T     basic_streambuf&lt;charT,traits&gt;* rdbuf(basic_streambuf&lt;charT,traits&gt;* sb);<br />
5211 X     basic_ios&amp; copyfmt(const basic_ios&amp; rhs);<br />
5212 T     char_type fill() const;<br />
5213 T     char_type fill(char_type ch);<br />
5214       // _lib.ios.base.locales_ locales:<br />
5215 T     locale imbue(const locale&amp; loc);<br />
5216 X     char     narrow(char_type c, char dfault) const;<br />
5217 X     char_type widen(char c) const;<br />
5218     protected:<br />
5219       basic_ios();<br />
5220 T     void init(basic_streambuf&lt;charT,traits&gt;* sb);<br />
5221    private:<br />
5222 T     basic_ios(const basic_ios&amp; );       // not defined<br />
5223 T     basic_ios&amp; operator=(const basic_ios&amp;);     // not defined<br />
5224     };<br />
5225 <br />
5226 <br />
5227    27.5  Stream buffers                              [lib.stream.buffers]<br />
5228 <br />
5229    Header &lt;streambuf&gt; synopsis<br />
5230 <br />
5231 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5232       class basic_streambuf;<br />
5233 T   typedef basic_streambuf&lt;char&gt;     streambuf;<br />
5234 T   typedef basic_streambuf&lt;wchar_t&gt; wstreambuf;<br />
5235 <br />
5236    27.5.2  Template class                                 [lib.streambuf]<br />
5237        basic_streambuf&lt;charT,traits&gt;<br />
5238 <br />
5239     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5240 X   class basic_streambuf {<br />
5241     public:<br />
5242 <br />
5243       // Types:<br />
5244 T     typedef charT                     char_type;<br />
5245 T     typedef typename traits::int_type int_type;<br />
5246 T     typedef typename traits::pos_type pos_type;<br />
5247 T     typedef typename traits::off_type off_type;<br />
5248 T     typedef traits                    traits_type;<br />
5249 T     virtual ~basic_streambuf();<br />
5250       // _lib.streambuf.locales_ locales:<br />
5251 T     locale   pubimbue(const locale &amp;loc);<br />
5252 T     locale   getloc() const;<br />
5253       // _lib.streambuf.buffer_ buffer and positioning:<br />
5254 T     basic_streambuf&lt;char_type,traits&gt;*<br />
5255                pubsetbuf(char_type* s, streamsize n);<br />
5256 T     pos_type pubseekoff(off_type off, ios_base::seekdir way,<br />
5257                           ios_base::openmode which =<br />
5258                               ios_base::in | ios_base::out);<br />
5259 T     pos_type pubseekpos(pos_type sp,<br />
5260                           ios_base::openmode which =<br />
5261                               ios_base::in | ios_base::out);<br />
5262 T     int      pubsync();<br />
5263 <br />
5264       // Get and put areas:<br />
5265       // _lib.streambuf.pub.get_ Get area:<br />
5266 T     streamsize in_avail();<br />
5267 T     int_type snextc();<br />
5268 T     int_type sbumpc();<br />
5269 T     int_type sgetc();<br />
5270 T     streamsize sgetn(char_type* s, streamsize n);<br />
5271       // _lib.streambuf.pub.pback_ Putback:<br />
5272 X     int_type sputbackc(char_type c);<br />
5273 X     int_type sungetc();<br />
5274       // _lib.streambuf.pub.put_ Put area:<br />
5275 T     int_type   sputc(char_type c);<br />
5276 X     streamsize sputn(const char_type* s, streamsize n);<br />
5277     protected:<br />
5278 T     basic_streambuf();<br />
5279       // _lib.streambuf.get.area_ Get area:<br />
5280 T     char_type* eback() const;<br />
5281 T     char_type* gptr()  const;<br />
5282 T     char_type* egptr() const;<br />
5283 T     void       gbump(int n);<br />
5284 T     void       setg(char_type* gbeg, char_type* gnext, char_type* gend);<br />
5285       // _lib.streambuf.put.area_ Put area:<br />
5286 T     char_type* pbase() const;<br />
5287 T     char_type* pptr() const;<br />
5288 T     char_type* epptr() const;<br />
5289 T     void       pbump(int n);<br />
5290 T     void       setp(char_type* pbeg, char_type* pend);<br />
5291       // _lib.streambuf.virtuals_ virtual functions:<br />
5292       // _lib.streambuf.virt.locales_ Locales:<br />
5293 T     virtual void imbue(const locale &amp;loc);<br />
5294       // _lib.streambuf.virt.buffer_ Buffer management and positioning:<br />
5295 T     virtual basic_streambuf&lt;char_type,traits&gt;*<br />
5296                        setbuf(char_type* s, streamsize n);<br />
5297 T     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
5298                 ios_base::openmode which = ios_base::in | ios_base::out);<br />
5299 T     virtual pos_type seekpos(pos_type sp,<br />
5300                 ios_base::openmode which = ios_base::in | ios_base::out);<br />
5301 T     virtual int      sync();<br />
5302       // _lib.streambuf.virt.get_ Get area:<br />
5303 T     virtual int        showmanyc();<br />
5304 T     virtual streamsize xsgetn(char_type* s, streamsize n);<br />
5305 T     virtual int_type   underflow();<br />
5306 T     virtual int_type   uflow();<br />
5307       // _lib.streambuf.virt.pback_ Putback:<br />
5308 T     virtual int_type   pbackfail(int_type c = traits::eof());<br />
5309       // _lib.streambuf.virt.put_ Put area:<br />
5310 X     virtual streamsize xsputn(const char_type* s, streamsize n);<br />
5311 T     virtual int_type   overflow (int_type c = traits::eof());<br />
5312     };<br />
5313 <br />
5314    27.6  Formatting and manipulators                [lib.iostream.format]<br />
5315 <br />
5316    Header &lt;istream&gt; synopsis<br />
5317 <br />
5318 T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5319       class basic_istream;<br />
5320 T   typedef basic_istream&lt;char&gt;     istream;<br />
5321 T   typedef basic_istream&lt;wchar_t&gt; wistream;<br />
5322 <br />
5323 T   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5324       class basic_iostream;<br />
5325 T   typedef basic_iostream&lt;char&gt;    iostream;<br />
5326 T   typedef basic_iostream&lt;wchar_t&gt; wiostream;<br />
5327 <br />
5328 X   template &lt;class charT, class traits&gt;<br />
5329       basic_istream&lt;charT,traits&gt;&amp; ws(basic_istream&lt;charT,traits&gt;&amp; is);<br />
5330 <br />
5331    Header &lt;ostream&gt; synopsis<br />
5332 <br />
5333 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5334       class basic_ostream;<br />
5335 T   typedef basic_ostream&lt;char&gt;     ostream;<br />
5336 T   typedef basic_ostream&lt;wchar_t&gt; wostream;<br />
5337 <br />
5338 T   template &lt;class charT, class traits&gt;<br />
5339       basic_ostream&lt;charT,traits&gt;&amp; endl(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
5340 T   template &lt;class charT, class traits&gt;<br />
5341       basic_ostream&lt;charT,traits&gt;&amp; ends(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
5342 T   template &lt;class charT, class traits&gt;<br />
5343       basic_ostream&lt;charT,traits&gt;&amp; flush(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
5344 <br />
5345    Header &lt;iomanip&gt; synopsis<br />
5346 <br />
5347       // Types T1, T2, ... are unspecified implementation types<br />
5348 T     T1 resetiosflags(ios_base::fmtflags mask);<br />
5349 T     T2 setiosflags  (ios_base::fmtflags mask);<br />
5350 T     T3 setbase(int base);<br />
5351 T     template&lt;charT&gt; T4 setfill(charT c);<br />
5352 T     T5 setprecision(int n);<br />
5353 T     T6 setw(int n);<br />
5354 <br />
5355 <br />
5356    27.6.1.1  Template class basic_istream                   [lib.istream]<br />
5357 <br />
5358     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5359 T   class basic_istream : virtual public basic_ios&lt;charT,traits&gt; {<br />
5360     public:<br />
5361     // Types (inherited from basic_ios (_lib.ios_)):<br />
5362 T     typedef charT                     char_type;<br />
5363 T     typedef typename traits::int_type int_type;<br />
5364 T     typedef typename traits::pos_type pos_type;<br />
5365 T     typedef typename traits::off_type off_type;<br />
5366 T     typedef traits                    traits_type;<br />
5367       // _lib.istream.cons_ Constructor/destructor:<br />
5368 T     explicit basic_istream(basic_streambuf&lt;charT,traits&gt;* sb);<br />
5369 T     virtual ~basic_istream();<br />
5370       // _lib.istream::sentry_ Prefix/suffix:<br />
5371 T     class sentry;<br />
5372 <br />
5373       // _lib.istream.formatted_ Formatted input:<br />
5374 T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
5375           (basic_istream&lt;charT,traits&gt;&amp; (*pf)(basic_istream&lt;charT,traits&gt;&amp;))<br />
5376 T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
5377           (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;))<br />
5378 T     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
5379           (ios_base&amp; (*pf)(ios_base&amp;))<br />
5380 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(bool&amp; n);<br />
5381 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(short&amp; n);<br />
5382 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned short&amp; n);<br />
5383 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(int&amp; n);<br />
5384 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned int&amp; n);<br />
5385 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long&amp; n);<br />
5386 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(unsigned long&amp; n);<br />
5387 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(float&amp; f);<br />
5388 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(double&amp; f);<br />
5389 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(long double&amp; f);<br />
5390 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(void*&amp; p);<br />
5391 S     basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;<br />
5392           (basic_streambuf&lt;char_type,traits&gt;* sb);<br />
5393       // _lib.istream.unformatted_ Unformatted input:<br />
5394 T     streamsize gcount() const;<br />
5395 S     int_type get();<br />
5396 S     basic_istream&lt;charT,traits&gt;&amp; get(char_type&amp; c);<br />
5397 S     basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n);<br />
5398 S     basic_istream&lt;charT,traits&gt;&amp; get(char_type* s, streamsize n,<br />
5399                         char_type delim);<br />
5400 S     basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb);<br />
5401 S     basic_istream&lt;charT,traits&gt;&amp; get(basic_streambuf&lt;char_type,traits&gt;&amp; sb,<br />
5402                         char_type delim);<br />
5403 S     basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n);<br />
5404 S     basic_istream&lt;charT,traits&gt;&amp; getline(char_type* s, streamsize n,<br />
5405                         char_type delim);<br />
5406 S     basic_istream&lt;charT,traits&gt;&amp; ignore<br />
5407           (streamsize n = 1, int_type delim = traits::eof());<br />
5408 S     int_type                     peek();<br />
5409 S     basic_istream&lt;charT,traits&gt;&amp; read    (char_type* s, streamsize n);<br />
5410 S     streamsize                   readsome(char_type* s, streamsize n);<br />
5411 S     basic_istream&lt;charT,traits&gt;&amp; putback(char_type c);<br />
5412 S     basic_istream&lt;charT,traits&gt;&amp; unget();<br />
5413 S     int sync();<br />
5414 <br />
5415 S     pos_type tellg();<br />
5416 S     basic_istream&lt;charT,traits&gt;&amp; seekg(pos_type);<br />
5417 S     basic_istream&lt;charT,traits&gt;&amp; seekg(off_type, ios_base::seekdir);<br />
5418     };<br />
5419 <br />
5420     // _lib.istream::extractors_ character extraction templates:<br />
5421 S   template&lt;class charT, class traits&gt;<br />
5422       basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,<br />
5423                                               charT&amp;);<br />
5424 S   template&lt;class traits&gt;<br />
5425       basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
5426                                              unsigned char&amp;);<br />
5427 S   template&lt;class traits&gt;<br />
5428       basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
5429                                              signed char&amp;);<br />
5430 <br />
5431 S   template&lt;class charT, class traits&gt;<br />
5432       basic_istream&lt;charT,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;charT,traits&gt;&amp;,<br />
5433                                               charT*);<br />
5434 S   template&lt;class traits&gt;<br />
5435       basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
5436                                              unsigned char*);<br />
5437 S   template&lt;class traits&gt;<br />
5438       basic_istream&lt;char,traits&gt;&amp; operator&gt;&gt;(basic_istream&lt;char,traits&gt;&amp;,<br />
5439                                              signed char*);<br />
5440 <br />
5441    27.6.1.1.2  Class basic_istream::sentry          [lib.istream::sentry]<br />
5442 <br />
5443 <br />
5444     template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;<br />
5445 S   class basic_istream&lt;charT,traits&gt;::sentry {<br />
5446       typedef traits traits_type;<br />
5447 S     bool ok_; // exposition only<br />
5448      public:<br />
5449 S     explicit sentry(basic_istream&lt;charT,traits&gt;&amp; is, bool noskipws = false);<br />
5450 S     ~sentry();<br />
5451 S     operator bool() const { return ok_; }<br />
5452      private:<br />
5453 T     sentry(const sentry&amp;); //   not defined<br />
5454 T     sentry&amp; operator=(const sentry&amp;); //   not defined<br />
5455     };<br />
5456 <br />
5457 <br />
5458    27.6.1.5  Template class basic_iostream            [lib.iostreamclass]<br />
5459 <br />
5460     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5461 T   class basic_iostream :<br />
5462       public basic_istream&lt;charT,traits&gt;,<br />
5463       public basic_ostream&lt;charT,traits&gt; {<br />
5464     public:<br />
5465       // constructor/destructor<br />
5466 T     explicit basic_iostream(basic_streambuf&lt;charT,traits&gt;* sb);<br />
5467 T     virtual ~basic_iostream();<br />
5468     };<br />
5469 <br />
5470 <br />
5471    27.6.2.1  Template class basic_ostream                   [lib.ostream]<br />
5472 <br />
5473     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5474 X   class basic_ostream : virtual public basic_ios&lt;charT,traits&gt; {<br />
5475     public:<br />
5476     // Types (inherited from basic_ios (_lib.ios_)):<br />
5477 T     typedef charT                     char_type;<br />
5478 T     typedef typename traits::int_type int_type;<br />
5479 T     typedef typename traits::pos_type pos_type;<br />
5480 T     typedef typename traits::off_type off_type;<br />
5481 T     typedef traits                    traits_type;<br />
5482       // _lib.ostream.cons_ Constructor/destructor:<br />
5483 T     explicit basic_ostream(basic_streambuf&lt;char_type,traits&gt;* sb);<br />
5484 T     virtual ~basic_ostream();<br />
5485       // _lib.ostream::sentry_ Prefix/suffix:<br />
5486 T     class sentry;<br />
5487       // _lib.ostream.formatted_ Formatted output:<br />
5488 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
5489           (basic_ostream&lt;charT,traits&gt;&amp; (*pf)(basic_ostream&lt;charT,traits&gt;&amp;));<br />
5490 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
5491           (basic_ios&lt;charT,traits&gt;&amp; (*pf)(basic_ios&lt;charT,traits&gt;&amp;));<br />
5492 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
5493           (ios_base&amp; (*pf)(ios_base&amp;));<br />
5494 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(bool n);<br />
5495 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(short n);<br />
5496 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned short n);<br />
5497 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(int n);<br />
5498 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned int n);<br />
5499 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long n);<br />
5500 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(unsigned long n);<br />
5501 S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(float f);<br />
5502 S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(double f);<br />
5503 S     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(long double f);<br />
5504 T     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(const void* p);<br />
5505 X     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;<br />
5506           (basic_streambuf&lt;char_type,traits&gt;* sb);<br />
5507       // _lib.ostream.unformatted_ Unformatted output:<br />
5508 T     basic_ostream&lt;charT,traits&gt;&amp; put(char_type c);<br />
5509 T     basic_ostream&lt;charT,traits&gt;&amp; write(const char_type* s, streamsize n);<br />
5510 X     basic_ostream&lt;charT,traits&gt;&amp; flush();<br />
5511 <br />
5512       // _lib.ostream.seeks_ seeks:<br />
5513 S     pos_type tellp();<br />
5514 S     basic_ostream&lt;charT,traits&gt;&amp; seekp(pos_type);<br />
5515 S     basic_ostream&lt;charT,traits&gt;&amp; seekp(off_type, ios_base::seekdir);<br />
5516     };<br />
5517     // _lib.ostream.inserters.character_ character inserters<br />
5518 X   template&lt;class charT, class traits&gt;<br />
5519     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
5520                                             charT);<br />
5521 X   template&lt;class charT, class traits&gt;<br />
5522     basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
5523                                             char);<br />
5524     // specialization<br />
5525 X   template&lt;class traits&gt;<br />
5526       basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
5527                                              char);<br />
5528     // signed and unsigned<br />
5529 X   template&lt;class traits&gt;<br />
5530       basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
5531                                              signed char);<br />
5532 X   template&lt;class traits&gt;<br />
5533       basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
5534                                              unsigned char)<br />
5535 X   template&lt;class charT, class traits&gt;<br />
5536       basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
5537                                               const charT*);<br />
5538 X   template&lt;class charT, class traits&gt;<br />
5539       basic_ostream&lt;charT,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;charT,traits&gt;&amp;,<br />
5540                                               const char*);<br />
5541     // partial specializationss<br />
5542 X   template&lt;class traits&gt;<br />
5543       basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
5544                                              const char*);<br />
5545     //  signed and unsigned<br />
5546 X   template&lt;class traits&gt;<br />
5547       basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
5548                                              const signed char*);<br />
5549 X   template&lt;class traits&gt;<br />
5550       basic_ostream&lt;char,traits&gt;&amp; operator&lt;&lt;(basic_ostream&lt;char,traits&gt;&amp;,<br />
5551                                              const unsigned char*);<br />
5552 <br />
5553 <br />
5554    27.6.2.3  Class basic_ostream::sentry            [lib.ostream::sentry]<br />
5555 <br />
5556     template &lt;class charT,class traits = char_traits&lt;charT&gt; &gt;<br />
5557 X   class basic_ostream&lt;charT,traits&gt;::sentry {<br />
5558       bool ok_; // exposition only<br />
5559      public:<br />
5560 X     explicit sentry(basic_ostream&lt;charT,traits&gt;&amp; os);<br />
5561 X     ~sentry();<br />
5562 X     operator bool() const { return ok_; }<br />
5563      private<br />
5564 X     sentry(const sentry&amp;); //   not defined<br />
5565 X     sentry&amp; operator=(const sentry&amp;); //   not defined<br />
5566     };<br />
5567 <br />
5568    27.7  String-based streams                        [lib.string.streams]<br />
5569 <br />
5570    Header &lt;sstream&gt; synopsis<br />
5571 <br />
5572 X   template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5573                       class Allocator = allocator&lt;charT&gt; &gt;<br />
5574       class basic_stringbuf;<br />
5575 <br />
5576 T   typedef basic_stringbuf&lt;char&gt;     stringbuf;<br />
5577 T   typedef basic_stringbuf&lt;wchar_t&gt; wstringbuf;<br />
5578 <br />
5579     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5580                       class Allocator = allocator&lt;charT&gt; &gt;<br />
5581 X     class basic_istringstream;<br />
5582 <br />
5583 T   typedef basic_istringstream&lt;char&gt;     istringstream;<br />
5584 T   typedef basic_istringstream&lt;wchar_t&gt; wistringstream;<br />
5585 <br />
5586     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5587                       class Allocator = allocator&lt;charT&gt; &gt;<br />
5588 X     class basic_ostringstream;<br />
5589 T   typedef basic_ostringstream&lt;char&gt;     ostringstream;<br />
5590 T   typedef basic_ostringstream&lt;wchar_t&gt; wostringstream;<br />
5591 <br />
5592     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5593                       class Allocator = allocator&lt;charT&gt; &gt;<br />
5594 X     class basic_stringstream;<br />
5595 T   typedef basic_stringstream&lt;char&gt;     stringstream;<br />
5596 T   typedef basic_stringstream&lt;wchar_t&gt; wstringstream;<br />
5597 <br />
5598    27.7.1  Template class basic_stringbuf                 [lib.stringbuf]<br />
5599 <br />
5600     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5601               class Allocator = allocator&lt;charT&gt; &gt;<br />
5602 X   class basic_stringbuf : public basic_streambuf&lt;charT,traits&gt; {<br />
5603     public:<br />
5604 T     typedef charT                     char_type;<br />
5605 T     typedef typename traits::int_type int_type;<br />
5606 T     typedef typename traits::pos_type pos_type;<br />
5607 T     typedef typename traits::off_type off_type;<br />
5608 T     typedef traits                    traits_type;<br />
5609       // _lib.stringbuf.cons_ Constructors:<br />
5610 S     explicit basic_stringbuf(ios_base::openmode which<br />
5611                                 = ios_base::in | ios_base::out);<br />
5612 S     explicit basic_stringbuf<br />
5613           (const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
5614            ios_base::openmode which = ios_base::in | ios_base::out);<br />
5615       // _lib.stringbuf.members_ Get and set:<br />
5616 S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
5617 S     void               str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
5618 <br />
5619     protected:<br />
5620       // _lib.stringbuf.virtuals_ Overridden virtual functions:<br />
5621 S     virtual int_type   underflow();<br />
5622 S     virtual int_type   pbackfail(int_type c = traits::eof());<br />
5623 S     virtual int_type   overflow (int_type c = traits::eof());<br />
5624 S     virtual  basic_streambuf&lt;charT,traits&gt;* setbuf(charT*, streamsize);<br />
5625 <br />
5626 S     virtual pos_type   seekoff(off_type off, ios_base::seekdir way,<br />
5627                                  ios_base::openmode which<br />
5628                                   = ios_base::in | ios_base::out);<br />
5629 S     virtual pos_type   seekpos(pos_type sp,<br />
5630                                  ios_base::openmode which<br />
5631                                   = ios_base::in | ios_base::out);<br />
5632     };<br />
5633 <br />
5634 <br />
5635    27.7.2  Template class basic_istringstream         [lib.istringstream]<br />
5636 <br />
5637     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5638               class Allocator = allocator&lt;charT&gt; &gt;<br />
5639 X   class basic_istringstream : public basic_istream&lt;charT,traits&gt; {<br />
5640     public:<br />
5641 T     typedef charT                     char_type;<br />
5642 T     typedef typename traits::int_type int_type;<br />
5643 T     typedef typename traits::pos_type pos_type;<br />
5644 T     typedef typename traits::off_type off_type;<br />
5645 T     typedef traits                    traits_type;<br />
5646       // _lib.istringstream.cons_ Constructors:<br />
5647 S     explicit basic_istringstream(ios_base::openmode which = ios_base::in);<br />
5648 S     explicit basic_istringstream(<br />
5649                          const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
5650                          ios_base::openmode which = ios_base::in);<br />
5651 <br />
5652       // _lib.istringstream.members_ Members:<br />
5653 S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
5654 S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
5655 S     void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
5656    private:<br />
5657    //  basic_stringbuf&lt;charT,traits,Allocator&gt; sb;   exposition only<br />
5658     };<br />
5659 <br />
5660    27.7.3  Class basic_ostringstream                  [lib.ostringstream]<br />
5661 <br />
5662     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5663               class Allocator = allocator&lt;charT&gt; &gt;<br />
5664 X   class basic_ostringstream : public basic_ostream&lt;charT,traits&gt; {<br />
5665     public:<br />
5666 <br />
5667       // Types:<br />
5668 T     typedef charT            char_type;<br />
5669 T     typedef typename traits::int_type int_type;<br />
5670 T     typedef typename traits::pos_type pos_type;<br />
5671 T     typedef typename traits::off_type off_type;<br />
5672       // _lib.ostringstream.cons_ Constructors/destructor:<br />
5673 S     explicit basic_ostringstream(ios_base::openmode which = ios_base::out);<br />
5674 S     explicit basic_ostringstream(<br />
5675                            const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
5676                            ios_base::openmode which = ios_base::out);<br />
5677       // _lib.ostringstream.members_ Members:<br />
5678 S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
5679 S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
5680 S     void    str(const basic_string&lt;charT,traits,Allocator&gt;&amp; s);<br />
5681     };<br />
5682 <br />
5683 <br />
5684    27.7.4  Template class basic_stringstream           [lib.stringstream]<br />
5685 <br />
5686     template &lt;class charT, class traits = char_traits&lt;charT&gt;,<br />
5687               class Allocator = allocator&lt;charT&gt; &gt;<br />
5688 X   class basic_stringstream<br />
5689       : public basic_iostream&lt;charT,traits&gt; {<br />
5690     public:<br />
5691       // Types<br />
5692 T     typedef charT                     char_type;<br />
5693 T     typedef typename traits::int_type int_type;<br />
5694 T     typedef typename traits::pos_type pos_type;<br />
5695 T     typedef typename traits::off_type off_type;<br />
5696       // constructors/destructors<br />
5697 S     explicit basic_stringstream(<br />
5698           ios_base::openmode which = ios_base::out|ios_base::in);<br />
5699 S     explicit basic_stringstream(<br />
5700           const basic_string&lt;charT,traits,Allocator&gt;&amp; str,<br />
5701           ios_base::openmode which = ios_base::out|ios_base::in);<br />
5702       // Members:<br />
5703 S     basic_stringbuf&lt;charT,traits,Allocator&gt;* rdbuf() const;<br />
5704 S     basic_string&lt;charT,traits,Allocator&gt; str() const;<br />
5705 S     void str(const basic_string&lt;charT,traits,Allocator&gt;&amp; str);<br />
5706     };<br />
5707 <br />
5708 <br />
5709 <br />
5710    27.8.1  File streams                                    [lib.fstreams]<br />
5711 <br />
5712 <br />
5713    Header &lt;fstream&gt; synopsis<br />
5714 <br />
5715 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5716       class basic_filebuf;<br />
5717 T   typedef basic_filebuf&lt;char&gt;    filebuf;<br />
5718 T   typedef basic_filebuf&lt;wchar_t&gt; wfilebuf;<br />
5719 <br />
5720 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5721       class basic_ifstream;<br />
5722 T   typedef basic_ifstream&lt;char&gt;    ifstream;<br />
5723 T   typedef basic_ifstream&lt;wchar_t&gt; wifstream;<br />
5724 <br />
5725 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5726       class basic_ofstream;<br />
5727 T   typedef basic_ofstream&lt;char&gt;    ofstream;<br />
5728 T   typedef basic_ofstream&lt;wchar_t&gt; wofstream;<br />
5729 <br />
5730 X   template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5731       class basic_fstream;<br />
5732 T   typedef basic_fstream&lt;char&gt;     fstream;<br />
5733 T   typedef basic_fstream&lt;wchar_t&gt; wfstream;<br />
5734 <br />
5735    27.8.1.1  Template class basic_filebuf                   [lib.filebuf]<br />
5736 <br />
5737     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5738 X   class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {<br />
5739     public:<br />
5740 T     typedef charT                     char_type;<br />
5741 T     typedef typename traits::int_type int_type;<br />
5742 T     typedef typename traits::pos_type pos_type;<br />
5743 T     typedef typename traits::off_type off_type;<br />
5744 T     typedef traits                    traits_type;<br />
5745       // _lib.filebuf.cons_ Constructors/destructor:<br />
5746 X     basic_filebuf();<br />
5747 X     virtual ~basic_filebuf();<br />
5748        // _lib.filebuf.members_ Members:<br />
5749 T     bool is_open() const;<br />
5750 X     basic_filebuf&lt;charT,traits&gt;* open<br />
5751           (const char* s, ios_base::openmode mode);<br />
5752 X     basic_filebuf&lt;charT,traits&gt;* close();<br />
5753     protected:<br />
5754       // _lib.filebuf.virtuals_ Overridden virtual functions:<br />
5755 X     virtual streamsize showmanyc();<br />
5756 X     virtual int_type underflow();<br />
5757 X     virtual int_type uflow();<br />
5758 X     virtual int_type pbackfail(int_type c = traits::eof());<br />
5759 X     virtual int_type overflow (int_type c = traits::eof());<br />
5760 S     virtual basic_streambuf&lt;charT,traits&gt;*<br />
5761                        setbuf(char_type* s, streamsize n);<br />
5762 S     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
5763                                ios_base::openmode which<br />
5764                                  = ios_base::in | ios_base::out);<br />
5765 S     virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
5766                                  = ios_base::in | ios_base::out);<br />
5767 S     virtual int      sync();<br />
5768 S     virtual void     imbue(const locale&amp; loc);<br />
5769     };<br />
5770 <br />
5771 <br />
5772 <br />
5773    27.8.1.5  Template class basic_ifstream                 [lib.ifstream]<br />
5774 <br />
5775     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5776 X   class basic_ifstream : public basic_istream&lt;charT,traits&gt; {<br />
5777     public:<br />
5778 T     typedef charT                     char_type;<br />
5779 T     typedef typename traits::int_type int_type;<br />
5780 T     typedef typename traits::pos_type pos_type;<br />
5781 T     typedef typename traits::off_type off_type;<br />
5782 T     typedef traits                    traits_type;<br />
5783       // _lib.ifstream.cons_ Constructors:<br />
5784 S     basic_ifstream();<br />
5785 S     explicit basic_ifstream(const char* s,<br />
5786                               ios_base::openmode mode = ios_base::in);<br />
5787       // _lib.ifstream.members_ Members:<br />
5788 S     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
5789 S     bool is_open();<br />
5790 S     void open(const char* s, ios_base::openmode mode = ios_base::in);<br />
5791 S     void close();<br />
5792     };<br />
5793 <br />
5794 <br />
5795    27.8.1.8  Template class basic_ofstream                 [lib.ofstream]<br />
5796 <br />
5797     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5798 X   class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {<br />
5799     public:<br />
5800 T     typedef charT                     char_type;<br />
5801 T     typedef typename traits::int_type int_type;<br />
5802 T     typedef typename traits::pos_type pos_type;<br />
5803 T     typedef typename traits::off_type off_type;<br />
5804 T     typedef traits                    traits_type;<br />
5805       // _lib.ofstream.cons_ Constructors:<br />
5806 X     basic_ofstream();<br />
5807 X     explicit basic_ofstream(const char* s,<br />
5808                               ios_base::openmode mode<br />
5809                                 = ios_base::out);<br />
5810       // _lib.ofstream.members_ Members:<br />
5811 X     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
5812 T     bool is_open();<br />
5813 X     void open(const char* s, ios_base::openmode mode = ios_base::out);<br />
5814 X     void close();<br />
5815     };<br />
5816 <br />
5817 <br />
5818    27.8.1.11  Template class basic_fstream                  [lib.fstream]<br />
5819 <br />
5820     template &lt;class charT, class traits=char_traits&lt;charT&gt; &gt;<br />
5821 X   class basic_fstream<br />
5822       : public basic_iostream&lt;charT,traits&gt; {<br />
5823     public:<br />
5824 T     typedef charT                     char_type;<br />
5825 T     typedef typename traits::int_type int_type;<br />
5826 T     typedef typename traits::pos_type pos_type;<br />
5827 T     typedef typename traits::off_type off_type;<br />
5828 T     typedef traits                    traits_type;<br />
5829       // constructors/destructor<br />
5830 S     basic_fstream();<br />
5831 S     explicit basic_fstream(<br />
5832           const char* s,<br />
5833           ios_base::openmode mode = ios_base::in|ios_base::out);<br />
5834 <br />
5835       // Members:<br />
5836 S     basic_filebuf&lt;charT,traits&gt;* rdbuf() const;<br />
5837 S     bool is_open();<br />
5838 S     void open(<br />
5839           const char* s,<br />
5840           ios_base::openmode mode = ios_base::in|ios_base::out);<br />
5841 S     void close();<br />
5842     };<br />
5843 <br />
5844 <br />
5845 <br />
5846    27.8.2  C Library files                                  [lib.c.files]<br />
5847 <br />
5848 <br />
5849                     Table 13--Header &lt;cstdio&gt; synopsis<br />
5850     Macros:<br />
5851 X   BUFSIZ         L_tmpnam        SEEK_SET   TMP_MAX<br />
5852 X   EOF            NULL &lt;cstdio&gt;   stderr     _IOFBF<br />
5853 X   FILENAME_MAX   SEEK_CUR        stdin      _IOLBF<br />
5854 X   FOPEN_MAX      SEEK_END        stdout     _IONBF<br />
5855 <br />
5856 X   Types:         FILE            fpos_t     size_t &lt;cstdio&gt;<br />
5857     Functions:<br />
5858 X   clearerr       fgets           fscanf     gets     rewind<br />
5859 X   fclose         fopen           fseek      perror   scanf     tmpnam<br />
5860 X   feof           fprintf         fsetpos    printf   setbuf    ungetc<br />
5861 X   ferror         fputc           ftell      putc     setvbuf   vprintf<br />
5862 X   fflush         fputs           fwrite     puts     sprintf   vfprintf<br />
5863 X   fgetc          fread           getc       remove   sscanf    vsprintf<br />
5864 X   fgetpos        freopen         getchar    putchar  rename    tmpfile<br />
5865 <br />
5866 <br />
5867 <br />
5868 <br />
5869    1.5  Standard C library headers                       [depr.c.headers]<br />
5870 <br />
5871 X     &lt;assert.h&gt;   &lt;iso646.h&gt;   &lt;setjmp.h&gt;   &lt;stdio.h&gt;    &lt;wchar.h&gt;<br />
5872       &lt;ctype.h&gt;    &lt;limits.h&gt;   &lt;signal.h&gt;   &lt;stdlib.h&gt;   &lt;wctype.h&gt;<br />
5873       &lt;errno.h&gt;    &lt;locale.h&gt;   &lt;stdarg.h&gt;   &lt;string.h&gt;<br />
5874       &lt;float.h&gt;    &lt;math.h&gt;     &lt;stddef.h&gt;   &lt;time.h&gt;<br />
5875 <br />
5876    1.6  Old iostreams members                          [depr.ios.members]<br />
5877 <br />
5878    [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
5879    namespace std {<br />
5880     class ios_base {<br />
5881     public:<br />
5882 T     typedef T1  io_state;<br />
5883 T     typedef T2 open_mode;<br />
5884 T     typedef T3  seek_dir;<br />
5885 T     typedef OFF_T  streamoff;<br />
5886 T     typedef OFF_T  streampos;<br />
5887       // remainder unchanged<br />
5888     };<br />
5889    }<br />
5890 <br />
5891    [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
5892    namespace std {<br />
5893     template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5894     class basic_streambuf {<br />
5895     public:<br />
5896 T     void stossc();<br />
5897       // remainder unchanged<br />
5898     };<br />
5899    }<br />
5900 <br />
5901    8 An implementation may provide  the  following  member  functions  that<br />
5902    overload signatures specified in clause _lib.iostreams_:<br />
5903 <br />
5904    [Note: the following overloads should be #ifdef'd to permit<br />
5905     diagnostics to be emitted, by default, if used.]<br />
5906 <br />
5907     template&lt;class charT, class Traits&gt; class basic_ios {<br />
5908     public:<br />
5909 M     void clear(io_state state);<br />
5910 M     void setstate(io_state state);<br />
5911       // remainder unchanged<br />
5912     };<br />
5913     class ios_base {<br />
5914     public:<br />
5915 M     void exceptions(io_state);<br />
5916       // remainder unchanged<br />
5917     };<br />
5918     template&lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5919     class basic_streambuf {<br />
5920     public:<br />
5921 M     pos_type pubseekoff(off_type off, ios_base::seek_dir way,<br />
5922                 ios_base::open_mode which = ios_base::in | ios_base::out);<br />
5923 M     pos_type pubseekpos(pos_type sp,<br />
5924                 ios_base::open_mode which = ios_base::in | ios_base::out);<br />
5925       // remainder unchanged<br />
5926     };<br />
5927     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5928     class basic_filebuf : public basic_streambuf&lt;charT,traits&gt; {<br />
5929     public:<br />
5930 M     basic_filebuf&lt;charT,traits&gt;* open<br />
5931           (const char* s, ios_base::open_mode mode);<br />
5932       // remainder unchanged<br />
5933     };<br />
5934     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5935     class basic_ifstream : public basic_istream&lt;charT,traits&gt; {<br />
5936     public:<br />
5937 M     void open(const char* s, ios_base::open_mode mode = in);<br />
5938       // remainder unchanged<br />
5939     };<br />
5940     template &lt;class charT, class traits = char_traits&lt;charT&gt; &gt;<br />
5941     class basic_ofstream : public basic_ostream&lt;charT,traits&gt; {<br />
5942     public:<br />
5943 M     void open(const char* s, ios_base::open_mode mode = out | trunc);<br />
5944       // remainder unchanged<br />
5945     };<br />
5946    }<br />
5947 <br />
5948 <br />
5949 <br />
5950    1.7.1  Class strstreambuf                          [depr.strstreambuf]<br />
5951 <br />
5952    [Note: It should be possible to adopt these components with only<br />
5953     minor changes from the 2.8 version of the library.]<br />
5954 <br />
5955 M   class strstreambuf : public basic_streambuf&lt;char&gt; {<br />
5956     public:<br />
5957 M     explicit strstreambuf(streamsize alsize_arg = 0);<br />
5958 M     strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));<br />
5959 M     strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0);<br />
5960 M     strstreambuf(const char* gnext_arg, streamsize n);<br />
5961 M     strstreambuf(signed char* gnext_arg, streamsize n,<br />
5962                    signed char* pbeg_arg = 0);<br />
5963 M     strstreambuf(const signed char* gnext_arg, streamsize n);<br />
5964 M     strstreambuf(unsigned char* gnext_arg, streamsize n,<br />
5965                    unsigned char* pbeg_arg = 0);<br />
5966 M     strstreambuf(const unsigned char* gnext_arg, streamsize n);<br />
5967 M     virtual ~strstreambuf();<br />
5968 M     void  freeze(bool freezefl = true);<br />
5969 M     char* str();<br />
5970 M     int   pcount();<br />
5971     protected:<br />
5972 M     virtual int_type overflow (int_type c = EOF);<br />
5973 M     virtual int_type pbackfail(int_type c = EOF);<br />
5974 M     virtual int_type underflow();<br />
5975 M     virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
5976                                ios_base::openmode which<br />
5977                                 = ios_base::in | ios_base::out);<br />
5978 M     virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
5979                                 = ios_base::in | ios_base::out);<br />
5980 M     virtual streambuf&lt;char&gt;* setbuf(char* s, streamsize n);<br />
5981    }<br />
5982 <br />
5983    1.7.4  Class strstream                                [depr.strstream]<br />
5984 <br />
5985 M   class strstream<br />
5986       : public basic_iostream&lt;char&gt; {<br />
5987     public:<br />
5988       // Types<br />
5989 M     typedef char                                char_type;<br />
5990 M     typedef typename char_traits&lt;char&gt;::int_type int_type<br />
5991 M     typedef typename char_traits&lt;char&gt;::pos_type pos_type;<br />
5992 M     typedef typename char_traits&lt;char&gt;::off_type off_type;<br />
5993       // consturctors/destructor<br />
5994 M     strstream();<br />
5995 M     strstream(char* s, int n,<br />
5996                 ios_base::openmode mode = ios_base::in|ios_base::out);<br />
5997 M     virtual ~strstream();<br />
5998       // Members:<br />
5999 M     strstreambuf* rdbuf() const;<br />
6000 M     void freeze(bool freezefl = true);<br />
6001 M     int pcount() const;<br />
6002 M     char* str();<br />
6003     };<br />
6004 </p></div></div><div class="sect3" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="standard.1998.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>
6005      The ISO standard defines the following phrase:
6006    </p><div class="blockquote"><blockquote class="blockquote"><div class="variablelist"><dl><dt><span class="term">
6007          <code class="code">[1.3.5] implementation-defined behavior</code>
6008        </span></dt><dd><p>
6009          Behavior, for a well-formed program construct and correct data, that
6010          depends on the implementation <span class="emphasis"><em>and that each implementation
6011          shall document</em></span>.
6012          </p></dd></dl></div></blockquote></div><p>
6013      We do so here, for the C++ library only.  Behavior of the
6014      compiler, linker, runtime loader, and other elements of "the
6015      implementation" are documented elsewhere.  Everything listed
6016      in Annex B, Implementation Qualities, are also part of the
6017      compiler, not the library.
6018    </p><p>
6019      For each entry, we give the section number of the standard, when
6020      applicable.  This list is probably incomplet and inkorrekt.
6021    </p><p>
6022      <span class="emphasis"><em>[1.9]/11 #3</em></span> If <code class="code">isatty(3)</code> is true, then
6023       interactive stream support is implied.
6024    </p><p>
6025      <span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best
6026       discussed in the various sections on multithreading (see above).
6027    </p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described
6028       <a class="ulink" href="../18_support/howto.html#1" target="_top">here</a>.
6029    </p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library
6030       sections, libstdc++ has zero control over what the cleanup code hands
6031       back to the runtime loader.  Talk to the compiler people.  :-)
6032    </p><p><span class="emphasis"><em>[18.4.2.1]/5</em></span> (bad_alloc),
6033       <span class="emphasis"><em>[18.5.2]/5</em></span> (bad_cast),
6034       <span class="emphasis"><em>[18.5.3]/5</em></span> (bad_typeid),
6035       <span class="emphasis"><em>[18.6.1]/8</em></span> (exception),
6036       <span class="emphasis"><em>[18.6.2.1]/5</em></span> (bad_exception):  The <code class="code">what()</code>
6037       member function of class <code class="code">std::exception</code>, and these other
6038       classes publicly derived from it, simply returns the name of the
6039       class.  But they are the <span class="emphasis"><em>mangled</em></span> names; you will need to call
6040       <code class="code">c++filt</code> and pass the names as command-line parameters to
6041       demangle them, or call a
6042       <a class="ulink" href="../18_support/howto.html#5" target="_top">runtime demangler function</a>.
6043       (The classes in <code class="code">&lt;stdexcept&gt;</code> have constructors which
6044       require an argument to use later for <code class="code">what()</code> calls, so the
6045       problem of <code class="code">what()</code>'s value does not arise in most
6046       user-defined exceptions.)
6047    </p><p><span class="emphasis"><em>[18.5.1]/7</em></span> The return value of
6048       <code class="code">std::type_info::name()</code> is the mangled type name (see the
6049       previous entry for more).
6050    </p><p><span class="emphasis"><em>[20.1.5]/5</em></span> <span class="emphasis"><em>"Implementors are encouraged to
6051       supply libraries that can accept allocators that encapsulate more
6052       general memory models and that support non-equal instances.  In such
6053       implementations, any requirements imposed on allocators by containers
6054       beyond those requirements that appear in Table 32, and the semantics
6055       of containers and algorithms when allocator instances compare
6056       non-equal, are implementation-defined."</em></span>  As yet we don't
6057       have any allocators which compare non-equal, so we can't describe how
6058       they behave.
6059    </p><p><span class="emphasis"><em>[21.1.3.1]/3,4</em></span>,
6060       <span class="emphasis"><em>[21.1.3.2]/2</em></span>,
6061       <span class="emphasis"><em>[23.*]'s foo::iterator</em></span>,
6062       <span class="emphasis"><em>[27.*]'s foo::*_type</em></span>,
6063       <span class="emphasis"><em>others...</em></span>
6064       Nope, these types are called implementation-defined because you
6065       shouldn't be taking advantage of their underlying types.  Listing them
6066       here would defeat the purpose.  :-)
6067    </p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about the mbstate_t
6068       stuff... see the <a class="ulink" href="../22_locale/howto.html" target="_top">chapter 22 notes</a>
6069       for what does exist.
6070    </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
6071       implementation will be described
6072       <a class="ulink" href="../22_locale/howto.html" target="_top">over here</a>.
6073    </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
6074       <code class="code">complex&lt;T&gt;</code>'s pow(0,0) returns.
6075    </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
6076       <code class="code">std::ios_base::sync_with_stdio</code> after I/O has already been
6077       performed on the standard stream objects will
6078       flush the buffers, and 
6079       destroy and recreate the underlying buffer instances.  Whether or not
6080       the previously-written I/O is destroyed in this process depends mostly
6081       on the --enable-libio choice:  for stdio, if the written data is
6082       already in the stdio buffer, the data may be completely safe!
6083    </p><p><span class="emphasis"><em>[27.6.1.1.2]</em></span>,
6084       <span class="emphasis"><em>[27.6.2.3]</em></span> The I/O sentry ctor and dtor can perform
6085       additional work than the minimum required.  We are not currently taking
6086       advantage of this yet.
6087    </p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>,
6088       <span class="emphasis"><em>[27.8.1.4]/10</em></span>
6089       The effects of <code class="code">pubsetbuf/setbuf</code> are described
6090       <a class="ulink" href="../27_io/howto.html#2" target="_top">in this chapter</a>.
6091    </p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when
6092       a get area exists will... whatever <code class="code">fflush()</code> does, I think.
6093    </p></div></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.tr1"></a>C++ TR1</h3></div></div></div><p>
6094 This table is based on the table of contents of ISO/IEC DTR 19768
6095 Doc No: N1836=05-0096 Date: 2005-06-24
6096 Draft Technical Report on C++ Library Extensions
6097 </p><p>
6098 In this implementation the header names are prefixed by
6099 <code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
6100 <code class="code">&lt;tr1/memory&gt;</code>, and so on.
6101 </p><p>
6102 This page describes the TR1 support in mainline GCC SVN, not in any particular
6103 release.
6104 </p><div class="table"><a id="id405938"></a><p class="title"><b>Table 1.1. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Done</th><th align="left">Broken</th><th align="left">Missing</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">See Footnotes</td></tr><tr><td align="left">2.2.3.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.6</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.7</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.8</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.9</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.3.10</td><td align="left"><code class="code">get_deleter</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>3</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td align="left">3.1</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.2</td><td align="left">Additions to <code class="code">&lt;functional&gt; synopsis</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.3</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.4</td><td align="left">Function return types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.5</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6</td><td align="left">Function object binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.4</td><td align="left">Placeholders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7</td><td align="left">Polymorphic function wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.6</td><td align="left">undefined operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.7</td><td align="left">null pointer comparison operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.8</td><td align="left">specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>4</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.3</td><td align="left">Helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.4</td><td align="left">General Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5</td><td align="left">Unary Type Traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.1</td><td align="left">Primary Type Categories</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.2</td><td align="left">Composite type traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.3</td><td align="left">Type properties</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.6</td><td align="left">Relationships between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7</td><td align="left">Transformations between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.2</td><td align="left">Reference modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.3</td><td align="left">Array modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.4</td><td align="left">Pointer modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.8</td><td align="left">Other transformations</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.9</td><td align="left">Implementation requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>5</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td align="left">5.1</td><td align="left">Random number generation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.3</td><td align="left">Class template <code class="code">variate_generator</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4</td><td align="left">Random number engine class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.1</td><td align="left">Class template <code class="code">linear_congruential</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.2</td><td align="left">Class template <code class="code">mersenne_twister</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.3</td><td align="left">Class template <code class="code">subtract_with_carry</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.4</td><td align="left">Class template <code class="code">subtract_with_carry_01</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.5</td><td align="left">Class template <code class="code">discard_block</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.4.6</td><td align="left">Class template <code class="code">xor_combine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">operator()() per N2079</td></tr><tr><td align="left">5.1.5</td><td align="left">Engines with predefined parameters</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7</td><td align="left">Random distribution class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.1</td><td align="left">Class template <code class="code">uniform_int</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.2</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.4</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.5</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.6</td><td align="left">Class template <code class="code">uniform_real</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.7</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.8</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.7.9</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2</td><td align="left">Mathematical special functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.2</td><td align="left">associated Legendre functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.3</td><td align="left">beta function</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.7</td><td align="left">confluent hypergeometric functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.8</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.9</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.10</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.11</td><td align="left">cylindrical Neumann functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.12</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.13</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.14</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.15</td><td align="left">exponential integral</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.16</td><td align="left">Hermite polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.17</td><td align="left">hypergeometric functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.18</td><td align="left">Laguerre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.19</td><td align="left">Legendre polynomials</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.20</td><td align="left">Riemann zeta function</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.21</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.22</td><td align="left">spherical associated Legendre functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.1.23</td><td align="left">spherical Neumann functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.2.2</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>6</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">6.1</td><td align="left">Tuple types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.1</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.2</td><td align="left">Additions to header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.1</td><td align="left">Construction</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.2</td><td align="left">Tuple creation functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.3</td><td align="left">Tuple helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.4</td><td align="left">Element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.3.5</td><td align="left">Relational operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.1.4</td><td align="left">Pairs</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2</td><td align="left">Fixed size array</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.3</td><td align="left"><code class="code">array</code> size</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.4</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.2.2.5</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3</td><td align="left">Unordered associative containers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.1</td><td align="left">Unordered associative container requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.1.1</td><td align="left">Exception safety guarantees</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.2</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.3</td><td align="left">Class template <code class="code">hash</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4</td><td align="left">Unordered associative container classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.1</td><td align="left">Header <code class="code">&lt;unordered_set&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.2</td><td align="left">Header <code class="code">&lt;unordered_map&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>7</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr><td align="left">7.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.3</td><td align="left">Regular expressions summary</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11</td><td align="left">Regular expression algorithms</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.1</td><td align="left">exceptions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12</td><td align="left">Regular expression Iterators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">7.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>8</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.1.9</td><td align="left">Additional Overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">8.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">8.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.4.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.6.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.10.1</td><td align="left">Synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.11.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 557</td></tr><tr><td align="left">8.11.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">8.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.3</td><td align="left">Function template definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.16.4</td><td align="left">Additional overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">8.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.22.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.24.3</td><td align="left">Additional format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">8.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">8.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">8.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">8.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p>
6105 Footnotes
6106 </p><p>
6107   The shared_ptr implementation uses some code from the
6108   <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost 
6109     shared_ptr</a> library.
6110 </p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.status.standard.200x"></a>C++ 200x</h3></div></div></div><p>
6111 This table is based on the table of contents of ISO/IEC 
6112 Doc No: N2461=07-0331 Date: 2007-10-22
6113 Working Draft, Standard for Programming Language C++
6114 </p><p>
6115 In this implementation <code class="literal">-std=gnu++0x</code> or
6116 <code class="literal">-std=c++0x</code> flags must be used to enable language and
6117 library features. The pre-defined symbol
6118 <code class="constant">__GXX_EXPERIMENTAL_CXX0X__</code> is used to check for the
6119 presence of the required flag.
6120 </p><p>
6121 This page describes the C++0x support in mainline GCC SVN, not in any
6122 particular release.
6123 </p><div class="table"><a id="id428196"></a><p class="title"><b>Table 1.2. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Done</th><th align="left">Broken</th><th align="left">Missing</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>20</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">20.2</td><td align="left">Utility Components</td><td align="left"> </td><td align="left"> </td><td align="left">incomplete</td><td align="left"> </td></tr><tr><td align="left">20.2.1</td><td align="left">Operators</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">20.2.2</td><td align="left">forward/move helpers</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">20.2.3</td><td align="left">Pairs</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Header <code class="code">&lt;tuple&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.1</td><td align="left">Construction</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.2</td><td align="left">Tuple creation functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.3</td><td align="left">Tuple helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.4</td><td align="left">Element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1.5</td><td align="left">Relational operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4</td><td colspan="5" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">20.4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.3</td><td align="left">Helper classes</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.4</td><td align="left">General Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5</td><td align="left">Unary Type Traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.1</td><td align="left">Primary Type Categories</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.2</td><td align="left">Composite type traits</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.5.3</td><td align="left">Type properties</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.6</td><td align="left">Relationships between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7</td><td align="left">Transformations between types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.2</td><td align="left">Reference modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.3</td><td align="left">Array modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.7.4</td><td align="left">Pointer modifications</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.8</td><td align="left">Other transformations</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.9</td><td align="left">Implementation requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5 </td><td align="left">Function Objects</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.1</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.2</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.3</td><td align="left">Base</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.4</td><td align="left">Function return types</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.5.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.14</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11</td><td align="left">Template function bind</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1</td><td align="left">Function object binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.11.1.4</td><td align="left">Placeholders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15</td><td align="left">Polymorphic function wrappers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.7</td><td align="left">null pointer comparison operators</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.15.2.8</td><td align="left">specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.16</td><td align="left">Class template <code class="code">hash</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left">missing <code class="code">unique_ptr</code></td></tr><tr><td align="left">20.6.5</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">20.6.6</td><td align="left">Smart pointers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">See Footnotes.</td></tr><tr><td align="left">20.6.6.2.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.6</td><td align="left"><code class="code">shared_ptr</code> creation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">
6124       <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">N2351</a>
6125       </td></tr><tr><td align="left">20.6.6.2.7</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.8</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.9</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.10</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.2.11</td><td align="left"><code class="code">get_deleter</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.3.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.4</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>23</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;array&gt;</code> synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Class template array</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.3</td><td align="left"><code class="code">array </code>size</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.4</td><td align="left"><code class="code">array </code>data</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.5</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1.6</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Unordered associative containers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.2.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.4.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>26</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Numerics</em></span></td></tr><tr><td align="left">26.4</td><td align="left">Random number generation</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.1</td><td align="left">Requirements</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.2</td><td align="left">Header <code class="code">&lt;random&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.3</td><td align="left">Random number engine class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4</td><td align="left">Random number engine adaptor class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.1</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.2</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.3</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.4.4</td><td align="left">Class template <code class="code">xor_combine_engine</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">operator()() per N2079</td></tr><tr><td align="left">26.4.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.7</td><td align="left">Utilities</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8</td><td align="left">Random number generation class templates</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Uniform distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.1</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.2</td><td align="left">Bernoulli distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.2.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3</td><td align="left">Poisson distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.3.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4</td><td align="left">Normal distributions</td><td align="left"> </td><td align="left"> </td><td align="left">partial</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.4.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5</td><td align="left">Sampling distributions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">26.4.8.5.1</td><td align="left">Class template <code class="code">general_pdf_distribution</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>28</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr><td align="left">28.1</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.3</td><td align="left">Regular expressions summary</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.4</td><td align="left">Header <code class="code">&lt;regex&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11</td><td align="left">Regular expression algorithms</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.1</td><td align="left">exceptions</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12</td><td align="left">Regular expression Iterators</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">28.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>C</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">C2.1</td><td align="left">Additions to header <code class="code">&lt;complex&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.1.9</td><td align="left">Additional Overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.2</td><td align="left">Header <code class="code">&lt;ccomplex&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">C2.3</td><td align="left">Header <code class="code">&lt;complex.h&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left">DR 551</td></tr><tr><td align="left">C2.4</td><td align="left">Additions to header <code class="code">&lt;cctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.4.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.5</td><td align="left">Additions to header <code class="code">&lt;ctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6</td><td align="left">Header <code class="code">&lt;cfenv&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.6.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.7</td><td align="left">Header <code class="code">&lt;fenv.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.8</td><td align="left">Additions to header <code class="code">&lt;cfloat&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.9</td><td align="left">Additions to header <code class="code">&lt;float.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.10</td><td align="left">Additions to header <code class="code">&lt;ios&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.10.1</td><td align="left">Synopsis</td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.11</td><td align="left">Header <code class="code">&lt;cinttypes&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.11.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 557</td></tr><tr><td align="left">C2.11.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.12</td><td align="left">Header <code class="code">&lt;inttypes.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.13</td><td align="left">Additions to header <code class="code">&lt;climits&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.14</td><td align="left">Additions to header <code class="code">&lt;limits.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.15</td><td align="left">Additions to header <code class="code">&lt;locale&gt;</code></td><td align="left"> </td><td align="left"> </td><td align="left">missing</td><td align="left"> </td></tr><tr><td align="left">C2.16</td><td align="left">Additions to header <code class="code">&lt;cmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.3</td><td align="left">Function template definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.16.4</td><td align="left">Additional overloads</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">C2.17</td><td align="left">Additions to header <code class="code">&lt;math.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.18</td><td align="left">Additions to header <code class="code">&lt;cstdarg&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.19</td><td align="left">Additions to header <code class="code">&lt;stdarg.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.20</td><td align="left">The header <code class="code">&lt;cstdbool&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.21</td><td align="left">The header <code class="code">&lt;stdbool.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22</td><td align="left">The header <code class="code">&lt;cstdint&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.22.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.23</td><td align="left">The header <code class="code">&lt;stdint.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24</td><td align="left">Additions to header <code class="code">&lt;cstdio&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.24.3</td><td align="left">Additional format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.24.4</td><td align="left">Additions to header <code class="code">&lt;stdio.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25</td><td align="left">Additions to header <code class="code">&lt;cstdlib&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.26</td><td align="left">Additions to header <code class="code">&lt;stdlib.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.27</td><td align="left">Header <code class="code">&lt;ctgmath&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">C2.28</td><td align="left">Header <code class="code">&lt;tgmath.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">DR 551</td></tr><tr><td align="left">C2.29</td><td align="left">Additions to header <code class="code">&lt;ctime&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.30</td><td align="left">Additions to header <code class="code">&lt;cwchar&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.2</td><td align="left">Definitions</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left">C library responsibility</td></tr><tr><td align="left">C2.31</td><td align="left">Additions to header <code class="code">&lt;wchar.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32</td><td align="left">Additions to header <code class="code">&lt;cwctype&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32.1</td><td align="left">Synopsis</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">C2.33</td><td align="left">Additions to header <code class="code">&lt;wctype.h&gt;</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>D</em></span></td><td colspan="5" align="left"><span class="emphasis"><em>Compatibility Features</em></span></td></tr><tr><td align="left">D.6</td><td align="left">Old iostream members</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.8</td><td align="left">Binders</td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"><a class="ulink" href="http://gcc.gnu.org/PR33911" target="_top">33911</a></td></tr><tr><td align="left">D.9</td><td align="left">Class template <code class="code">auto_ptr</code></td><td align="left">done</td><td align="left"> </td><td align="left"> </td><td align="left"><a class="ulink" href="http://gcc.gnu.org/PR33911" target="_top">33911</a></td></tr></tbody></table></div></div><br class="table-break" /><p>
6126 Footnotes
6127 </p><p>
6128   The shared_ptr implementation uses some code from the
6129   <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost 
6130     shared_ptr</a> library.
6131 </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt01ch01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part I. Introduction </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> License</td></tr></table></div></body></html>