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=" ISO C++ , library " /><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 />
7 Status Code Legend:<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 />
18 Only status codes appear in column 0. Notes relating to conformance<br />
19 issues appear [in brackets].<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 />
25 Detailed explanation of status codes:<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 />
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 />
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 />
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 />
45 V - Verified, passes all test suites: Verified to satisfy all<br />
46 generically testable conformance requirements.<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 />
55 P - Portability verified: Qualified on all primary target platforms.<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 />
61 ----------------------------------------------------------------------<br />
62 <algorithm> <iomanip> <list> <ostream> <streambuf><br />
63 <bitset> <ios> <locale> <queue> <string><br />
64 <complex> <iosfwd> <map> <set> <typeinfo><br />
65 X <deque> <iostream> <memory> <sstream> <utility><br />
66 <exception> <istream> <new> <stack> <valarray><br />
67 <fstream> <iterator> <numeric> <stdexcept> <vector><br />
68 <functional> <limits><br />
70 [C header names must be in std:: to qualify. Related to shadow/ dir.]<br />
71 <cassert> <ciso646> <csetjmp> <cstdio> <ctime><br />
72 <cctype> <climits> <csignal> <cstdlib> <cwchar><br />
73 X <cerrno> <clocale> <cstdarg> <cstring> <cwctype><br />
74 <cfloat> <cmath> <cstddef><br />
77 X errno, declared or defined in <cerrno>.<br />
80 X setjmp(jmp_buf), declared or defined in <csetjmp><br />
81 X va_end(va_list), declared or defined in <cstdarg><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 />
88 1 Which of the functions in the C++ Standard Library are not reentrant<br />
89 subroutines is implementation-defined.<br />
91 18.1 Types [lib.support.types]<br />
92 X <cstddef><br />
98 18.2 Implementation properties [lib.support.limits]<br />
100 <limits>, <climits>, and <cfloat><br />
102 18.2.1 Numeric limits [lib.limits]<br />
104 X template<class T> class numeric_limits;<br />
106 T enum float_round_style;<br />
107 T enum float_denorm_style;<br />
109 T template<> class numeric_limits<bool>;<br />
111 T template<> class numeric_limits<char>;<br />
112 T template<> class numeric_limits<signed char>;<br />
113 T template<> class numeric_limits<unsigned char>;<br />
114 T template<> class numeric_limits<wchar_t>;<br />
116 T template<> class numeric_limits<short>;<br />
117 T template<> class numeric_limits<int>;<br />
118 T template<> class numeric_limits<long>;<br />
119 T template<> class numeric_limits<unsigned short>;<br />
120 T template<> class numeric_limits<unsigned int>;<br />
121 T template<> class numeric_limits<unsigned long>;<br />
123 X template<> class numeric_limits<float>;<br />
124 X template<> class numeric_limits<double>;<br />
125 X template<> class numeric_limits<long double>;<br />
127 18.2.1.1 Template class numeric_limits [lib.numeric.limits]<br />
128 T template<class T> class numeric_limits {<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 />
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 />
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 />
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 />
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 />
166 18.2.1.3 Type float_round_style [lib.round.style]<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 />
176 18.2.1.4 Type float_denorm_style [lib.denorm.style]<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 />
184 18.2.1.5 numeric_limits specializations [lib.numeric.special]<br />
186 [Note: see Note at 18.2.1. ]<br />
188 18.2.2 C Library [lib.c.limits]<br />
190 1 Header <climits> (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 />
195 3 Header <cfloat> (Table 4):<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 />
207 1 Header <cstdlib> (partial), Table 5:<br />
208 X EXIT_FAILURE EXIT_SUCCESS<br />
209 abort atexit exit<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 />
216 18.4 Dynamic memory management [lib.support.dynamic]<br />
218 Header <new> synopsis<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 />
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&) throw();<br />
228 T void operator delete(void* ptr) throw();<br />
229 T void operator delete(void* ptr, const std::nothrow_t&) 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&) throw();<br />
232 T void operator delete[](void* ptr) throw();<br />
233 T void operator delete[](void* ptr, const std::nothrow_t&) 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 />
239 18.4.2.1 Class bad_alloc [lib.bad.alloc]<br />
241 T class bad_alloc : public exception {<br />
243 T bad_alloc() throw();<br />
244 T bad_alloc(const bad_alloc&) throw();<br />
245 T bad_alloc& operator=(const bad_alloc&) throw();<br />
246 T virtual ~bad_alloc() throw();<br />
247 T virtual const char* what() const throw();<br />
251 T new_handler set_new_handler(new_handler new_p) throw();<br />
254 Header <typeinfo> synopsis<br />
256 T class type_info;<br />
257 T class bad_cast;<br />
258 T class bad_typeid;<br />
260 18.5.1 - Class type_info [lib.type.info]<br />
262 T class type_info {<br />
264 T virtual ~type_info();<br />
265 T bool operator==(const type_info& rhs) const;<br />
266 T bool operator!=(const type_info& rhs) const;<br />
267 T bool before(const type_info& rhs) const;<br />
268 T const char* name() const;<br />
270 T type_info(const type_info& rhs);<br />
271 T type_info& operator=(const type_info& rhs);<br />
274 18.5.2 - Class bad_cast [lib.bad.cast]<br />
276 T bad_cast() throw();<br />
277 T virtual const char* bad_cast::what() const throw();<br />
279 18.5.3 Class bad_typeid [lib.bad.typeid]<br />
281 T class bad_typeid : public exception {<br />
283 T bad_typeid() throw();<br />
284 T bad_typeid(const bad_typeid&) throw();<br />
285 T bad_typeid& operator=(const bad_typeid&) throw();<br />
286 T virtual ~bad_typeid() throw();<br />
287 T virtual const char* what() const throw();<br />
290 18.6 Exception handling [lib.support.exception]<br />
292 T Header <exception> synopsis<br />
294 T class exception;<br />
295 T class bad_exception;<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 />
305 18.6.1 Class exception [lib.exception]<br />
307 T class exception {<br />
309 T exception() throw();<br />
310 T exception(const exception&) throw();<br />
311 T exception& operator=(const exception&) throw();<br />
312 T virtual ~exception() throw();<br />
313 T virtual const char* what() const throw();<br />
316 18.6.2.1 Class bad_exception [lib.bad.exception]<br />
317 T class bad_exception : public exception {<br />
319 T bad_exception() throw();<br />
320 T bad_exception(const bad_exception&) throw();<br />
321 T bad_exception& operator=(const bad_exception&) throw();<br />
322 T virtual ~bad_exception() throw();<br />
323 T virtual const char* what() const throw();<br />
326 18.7 Other runtime support [lib.support.runtime]<br />
328 1 Headers <cstdarg> (variable arguments), <csetjmp> (nonlocal jumps),<br />
329 <ctime> (system clock clock(), time()), <csignal> (signal handling),<br />
330 and <cstdlib> (runtime environment getenv(), system()).<br />
332 Table 6--Header <cstdarg> synopsis<br />
333 Macros: va_arg va_end va_start<br />
334 X Type: va_list<br />
336 Table 7--Header <csetjmp> synopsis<br />
338 Macro: setjmp |<br />
339 X Type: jmp_buf<br />
340 Function: longjmp<br />
342 Table 8--Header <ctime> synopsis<br />
344 Macros: CLOCKS_PER_SEC<br />
345 X Types: clock_t<br />
346 Functions: clock<br />
348 Table 9--Header <csignal> synopsis<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 />
355 Table 10--Header <cstdlib> synopsis<br />
357 X Functions: getenv system<br />
359 19.1 Exception classes [lib.std.exceptions]<br />
361 Header <stdexcept> synopsis<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 />
373 19.1.1 Class logic_error [lib.logic.error]<br />
374 T class logic_error : public exception {<br />
376 T explicit logic_error(const string& what_arg);<br />
379 19.1.2 Class domain_error [lib.domain.error]<br />
381 T class domain_error : public logic_error {<br />
383 T explicit domain_error(const string& what_arg);<br />
386 19.1.3 Class invalid_argument [lib.invalid.argument]<br />
388 T class invalid_argument : public logic_error {<br />
390 T explicit invalid_argument(const string& what_arg);<br />
393 19.1.4 Class length_error [lib.length.error]<br />
395 T class length_error : public logic_error {<br />
397 T explicit length_error(const string& what_arg);<br />
400 19.1.5 Class out_of_range [lib.out.of.range]<br />
402 T class out_of_range : public logic_error {<br />
404 T explicit out_of_range(const string& what_arg);<br />
408 19.1.6 Class runtime_error [lib.runtime.error]<br />
410 T class runtime_error : public exception {<br />
412 T explicit runtime_error(const string& what_arg);<br />
416 19.1.7 Class range_error [lib.range.error]<br />
418 T class range_error : public runtime_error {<br />
420 T explicit range_error(const string& what_arg);<br />
423 19.1.8 Class overflow_error [lib.overflow.error]<br />
425 T class overflow_error : public runtime_error {<br />
427 T explicit overflow_error(const string& what_arg);<br />
431 19.1.9 Class underflow_error [lib.underflow.error]<br />
433 T class underflow_error : public runtime_error {<br />
435 T explicit underflow_error(const string& what_arg);<br />
439 19.2 Assertions [lib.assertions]<br />
441 Table 2--Header <cassert> synopsis<br />
443 X Macro: assert<br />
445 19.3 Error numbers [lib.errno]<br />
447 Table 3--Header <cerrno> synopsis<br />
449 X |Macros: EDOM ERANGE errno |<br />
452 20.2 Utility components [lib.utility]<br />
454 Header <utility> synopsis<br />
456 // _lib.operators_, operators:<br />
457 T namespace rel_ops {<br />
458 T template<class T> bool operator!=(const T&, const T&);<br />
459 T template<class T> bool operator> (const T&, const T&);<br />
460 T template<class T> bool operator<=(const T&, const T&);<br />
461 T template<class T> bool operator>=(const T&, const T&);<br />
463 // _lib.pairs_, pairs:<br />
464 T template <class T1, class T2> struct pair;<br />
465 T template <class T1, class T2><br />
466 bool operator==(const pair<T1,T2>&, const pair<T1,T2>&);<br />
467 T template <class T1, class T2><br />
468 bool operator< (const pair<T1,T2>&, const pair<T1,T2>&);<br />
469 T template <class T1, class T2><br />
470 bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&);<br />
471 T template <class T1, class T2><br />
472 bool operator> (const pair<T1,T2>&, const pair<T1,T2>&);<br />
473 T template <class T1, class T2><br />
474 bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&);<br />
475 T template <class T1, class T2><br />
476 bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&);<br />
477 T template <class T1, class T2> pair<T1,T2> make_pair(const T1&, const T2&);<br />
480 20.2.2 Pairs [lib.pairs]<br />
482 T template <class T1, class T2><br />
484 T typedef T1 first_type;<br />
485 T typedef T2 second_type;<br />
490 T pair(const T1& x, const T2& y);<br />
491 T template<class U, class V> pair(const pair<U, V> &p);<br />
494 20.3 Function objects [lib.function.objects]<br />
496 Header <functional> synopsis<br />
498 // _lib.base_, base:<br />
499 V template <class Arg, class Result> struct unary_function;<br />
500 V template <class Arg1, class Arg2, class Result> struct binary_function;<br />
502 // _lib.arithmetic.operations_, arithmetic operations:<br />
503 V template <class T> struct plus;<br />
504 V template <class T> struct minus;<br />
505 V template <class T> struct multiplies;<br />
506 V template <class T> struct divides;<br />
507 V template <class T> struct modulus;<br />
508 V template <class T> struct negate;<br />
509 // _lib.comparisons_, comparisons:<br />
510 V template <class T> struct equal_to;<br />
511 V template <class T> struct not_equal_to;<br />
512 V template <class T> struct greater;<br />
513 V template <class T> struct less;<br />
514 V template <class T> struct greater_equal;<br />
515 V template <class T> struct less_equal;<br />
516 // _lib.logical.operations_, logical operations:<br />
517 V template <class T> struct logical_and;<br />
518 V template <class T> struct logical_or;<br />
519 V template <class T> struct logical_not;<br />
520 // _lib.negators_, negators:<br />
521 template <class Predicate> struct unary_negate;<br />
522 V template <class Predicate><br />
523 unary_negate<Predicate> not1(const Predicate&);<br />
524 V template <class Predicate> struct binary_negate;<br />
525 V template <class Predicate><br />
526 binary_negate<Predicate> not2(const Predicate&);<br />
527 // _lib.binders_, binders:<br />
528 V template <class Operation> class binder1st;<br />
529 V template <class Operation, class T><br />
530 binder1st<Operation> bind1st(const Operation&, const T&);<br />
531 V template <class Operation> class binder2nd;<br />
532 V template <class Operation, class T><br />
533 binder2nd<Operation> bind2nd(const Operation&, const T&);<br />
534 // _lib.function.pointer.adaptors_, adaptors:<br />
535 V template <class Arg, class Result> class pointer_to_unary_function;<br />
536 V template <class Arg, class Result><br />
537 pointer_to_unary_function<Arg,Result> ptr_fun(Result (*)(Arg));<br />
538 V template <class Arg1, class Arg2, class Result><br />
539 class pointer_to_binary_function;<br />
540 V template <class Arg1, class Arg2, class Result><br />
541 pointer_to_binary_function<Arg1,Arg2,Result><br />
542 ptr_fun(Result (*)(Arg1,Arg2));<br />
544 // _lib.member.pointer.adaptors_, adaptors:<br />
545 V template<class S, class T> class mem_fun_t;<br />
546 V template<class S, class T, class A> class mem_fun1_t;<br />
547 V template<class S, class T><br />
548 mem_fun_t<S,T> mem_fun(S (T::*f)());<br />
549 V template<class S, class T, class A><br />
550 mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A));<br />
551 V template<class S, class T> class mem_fun_ref_t;<br />
552 V template<class S, class T, class A> class mem_fun1_ref_t;<br />
553 V template<class S, class T><br />
554 mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)());<br />
555 V template<class S, class T, class A><br />
556 mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A));<br />
558 V template <class S, class T> class const_mem_fun_t;<br />
559 V template <class S, class T, class A> class const_mem_fun1_t;<br />
560 V template <class S, class T><br />
561 const_mem_fun_t<S,T> mem_fun(S (T::*f)() const);<br />
562 V template <class S, class T, class A><br />
563 const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const);<br />
564 V template <class S, class T> class const_mem_fun_ref_t;<br />
565 V template <class S, class T, class A> class const_mem_fun1_ref_t;<br />
566 V template <class S, class T><br />
567 const_mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)() const);<br />
568 V template <class S, class T, class A><br />
569 const_mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A) const);<br />
572 20.3.1 Base [lib.base]<br />
574 V template <class Arg, class Result><br />
575 struct unary_function {<br />
576 V typedef Arg argument_type;<br />
577 V typedef Result result_type;<br />
579 V template <class Arg1, class Arg2, class Result><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 />
586 20.3.2 Arithmetic operations [lib.arithmetic.operations]<br />
588 T template <class T> struct plus : binary_function<T,T,T> {<br />
589 V T operator()(const T& x, const T& y) const;<br />
592 T template <class T> struct minus : binary_function<T,T,T> {<br />
593 V T operator()(const T& x, const T& y) const;<br />
596 T template <class T> struct multiplies : binary_function<T,T,T> {<br />
597 V T operator()(const T& x, const T& y) const;<br />
600 T template <class T> struct divides : binary_function<T,T,T> {<br />
601 V T operator()(const T& x, const T& y) const;<br />
604 T template <class T> struct modulus : binary_function<T,T,T> {<br />
605 V T operator()(const T& x, const T& y) const;<br />
608 T template <class T> struct negate : unary_function<T,T> {<br />
609 V T operator()(const T& x) const;<br />
612 20.3.3 Comparisons [lib.comparisons]<br />
614 T template <class T> struct equal_to : binary_function<T,T,bool> {<br />
615 V bool operator()(const T& x, const T& y) const;<br />
618 T template <class T> struct not_equal_to : binary_function<T,T,bool> {<br />
619 V bool operator()(const T& x, const T& y) const;<br />
622 T template <class T> struct greater : binary_function<T,T,bool> {<br />
623 V bool operator()(const T& x, const T& y) const;<br />
626 T template <class T> struct less : binary_function<T,T,bool> {<br />
627 V bool operator()(const T& x, const T& y) const;<br />
630 T template <class T> struct greater_equal : binary_function<T,T,bool> {<br />
631 V bool operator()(const T& x, const T& y) const;<br />
634 T template <class T> struct less_equal : binary_function<T,T,bool> {<br />
635 V bool operator()(const T& x, const T& y) const;<br />
638 20.3.4 Logical operations [lib.logical.operations]<br />
640 T template <class T> struct logical_and : binary_function<T,T,bool> {<br />
641 V bool operator()(const T& x, const T& y) const;<br />
644 T template <class T> struct logical_or : binary_function<T,T,bool> {<br />
645 V bool operator()(const T& x, const T& y) const;<br />
648 T template <class T> struct logical_not : unary_function<T,bool> {<br />
649 V bool operator()(const T& x) const;<br />
652 20.3.5 Negators [lib.negators]<br />
654 T template <class Predicate><br />
655 class unary_negate<br />
656 : public unary_function<typename Predicate::argument_type,bool> {<br />
658 T explicit unary_negate(const Predicate& pred);<br />
659 V bool operator()(const typename Predicate::argument_type& x) const;<br />
662 T template <class Predicate><br />
663 class binary_negate<br />
664 : public binary_function<typename Predicate::first_argument_type,<br />
665 typename Predicate::second_argument_type, bool> {<br />
667 T explicit binary_negate(const Predicate& pred);<br />
668 V bool operator()(const typename Predicate::first_argument_type& x,<br />
669 const typename Predicate::second_argument_type& y) const;<br />
673 20.3.6 Binders [lib.binders]<br />
675 20.3.6.1 Template class binder1st [lib.binder.1st]<br />
676 T template <class Operation><br />
677 class binder1st<br />
678 : public unary_function<typename Operation::second_argument_type,<br />
679 typename Operation::result_type> {<br />
681 T Operation op;<br />
682 T typename Operation::first_argument_type value;<br />
684 V binder1st(const Operation& x,<br />
685 const typename Operation::first_argument_type& y);<br />
686 V typename Operation::result_type<br />
687 operator()(const typename Operation::second_argument_type& x) const;<br />
690 20.3.6.2 bind1st [lib.bind.1st]<br />
692 V template <class Operation, class T><br />
693 binder1st<Operation> bind1st(const Operation& op, const T& x);<br />
695 20.3.6.3 Template class binder2nd [lib.binder.2nd]<br />
696 T template <class Operation><br />
697 class binder2nd<br />
698 : public unary_function<typename Operation::first_argument_type,<br />
699 typename Operation::result_type> {<br />
701 T Operation op;<br />
702 T typename Operation::second_argument_type value;<br />
704 V binder2nd(const Operation& x,<br />
705 const typename Operation::second_argument_type& y);<br />
706 V typename Operation::result_type<br />
707 operator()(const typename Operation::first_argument_type& x) const;<br />
710 20.3.6.4 bind2nd [lib.bind.2nd]<br />
712 T template <class Operation, class T><br />
713 binder2nd<Operation> bind2nd(const Operation& op, const T& x);<br />
716 20.3.7 Adaptors for pointers to [lib.function.pointer.adaptors]<br />
719 1 To allow pointers to (unary and binary) functions to work with func-<br />
720 tion adaptors the library provides:<br />
722 T template <class Arg, class Result><br />
723 class pointer_to_unary_function : public unary_function<Arg, Result> {<br />
725 T explicit pointer_to_unary_function(Result (*f)(Arg));<br />
726 V Result operator()(Arg x) const;<br />
729 T template <class Arg, class Result><br />
730 pointer_to_unary_function<Arg, Result> ptr_fun(Result (*f)(Arg));<br />
732 T template <class Arg1, class Arg2, class Result><br />
733 class pointer_to_binary_function :<br />
734 public binary_function<Arg1,Arg2,Result> {<br />
736 T explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));<br />
737 V Result operator()(Arg1 x, Arg2 y) const;<br />
741 20.3.8 Adaptors for pointers to [lib.member.pointer.adaptors]<br />
744 T template <class S, class T> class mem_fun_t<br />
745 : public unary_function<T*, S> {<br />
747 T explicit mem_fun_t(S (T::*p)());<br />
748 V S operator()(T* p) const;<br />
751 T template <class S, class T, class A> class mem_fun1_t<br />
752 : public binary_function<T*, A, S> {<br />
754 T explicit mem_fun1_t(S (T::*p)(A));<br />
755 V S operator()(T* p, A x) const;<br />
758 V template<class S, class T> mem_fun_t<S,T><br />
759 mem_fun(S (T::*f)());<br />
760 V template<class S, class T, class A> mem_fun1_t<S,T,A><br />
761 mem_fun(S (T::*f)(A));<br />
763 T template <class S, class T> class mem_fun_ref_t<br />
764 : public unary_function<T, S> {<br />
766 T explicit mem_fun_ref_t(S (T::*p)());<br />
767 V S operator()(T& p) const;<br />
770 T template <class S, class T, class A> class mem_fun1_ref_t<br />
771 : public binary_function<T, A, S> {<br />
773 T explicit mem_fun1_ref_t(S (T::*p)(A));<br />
774 V S operator()(T& p, A x) const;<br />
777 T template<class S, class T> mem_fun_ref_t<S,T><br />
778 mem_fun_ref(S (T::*f)());<br />
780 T template<class S, class T, class A> mem_fun1_ref_t<S,T,A><br />
781 mem_fun_ref(S (T::*f)(A));<br />
783 T template <class S, class T> class const_mem_fun_t<br />
784 : public unary_function<T*, S> {<br />
786 T explicit const_mem_fun_t(S (T::*p)() const);<br />
787 V S operator()(const T* p) const;<br />
790 T template <class S, class T, class A> class const_mem_fun1_t<br />
791 : public binary_function<T*, A, S> {<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 />
797 V template<class S, class T> const_mem_fun_t<S,T><br />
798 mem_fun(S (T::*f)() const);<br />
799 V template<class S, class T, class A> const_mem_fun1_t<S,T,A><br />
800 mem_fun(S (T::*f)(A) const);<br />
802 T template <class S, class T> class const_mem_fun_ref_t<br />
803 : public unary_function<T, S> {<br />
805 T explicit const_mem_fun_ref_t(S (T::*p)() const);<br />
806 V S operator()(const T& p) const;<br />
809 T template <class S, class T, class A> class const_mem_fun1_ref_t<br />
810 : public binary_function<T, A, S> {<br />
812 T explicit const_mem_fun1_ref_t(S (T::*p)(A) const);<br />
813 V S operator()(const T& p, A x) const;<br />
816 T template<class S, class T> const_mem_fun_ref_t<S,T><br />
817 mem_fun_ref(S (T::*f)() const);<br />
819 T template<class S, class T, class A> const_mem_fun1_ref_t<S,T,A><br />
820 mem_fun_ref(S (T::*f)(A) const);<br />
822 20.4 Memory [lib.memory]<br />
824 Header <memory> synopsis<br />
826 // _lib.default.allocator_, the default allocator:<br />
827 T template <class T> class allocator;<br />
828 T template <> class allocator<void>;<br />
829 T template <class T, class U><br />
830 bool operator==(const allocator<T>&, const allocator<U>&) throw();<br />
831 T template <class T, class U><br />
832 bool operator!=(const allocator<T>&, const allocator<U>&) throw();<br />
833 // _lib.storage.iterator_, raw storage iterator:<br />
834 T template <class OutputIterator, class T> class raw_storage_iterator;<br />
835 // _lib.temporary.buffer_, temporary buffers:<br />
836 T template <class T><br />
837 pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n);<br />
838 T template <class T><br />
839 void return_temporary_buffer(T* p);<br />
840 // _lib.specialized.algorithms_, specialized algorithms:<br />
841 T template <class InputIterator, class ForwardIterator><br />
842 ForwardIterator<br />
843 uninitialized_copy(InputIterator first, InputIterator last,<br />
844 ForwardIterator result);<br />
845 T template <class ForwardIterator, class T><br />
846 void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
847 const T& x);<br />
848 T template <class ForwardIterator, class Size, class T><br />
849 void uninitialized_fill_n(ForwardIterator first, Size n, const T& x);<br />
850 // _lib.auto.ptr_, pointers:<br />
851 X template<class X> class auto_ptr;<br />
854 20.4.1 The default allocator [lib.default.allocator]<br />
856 T template <class T> class allocator;<br />
857 // specialize for void:<br />
858 T template <> class allocator<void> {<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 <class U> struct rebind { typedef allocator<U> other; };<br />
867 T template <class T> class allocator {<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& reference;<br />
874 T typedef const T& const_reference;<br />
875 T typedef T value_type;<br />
876 T template <class U> struct rebind { typedef allocator<U> other; };<br />
877 T allocator() throw();<br />
878 T allocator(const allocator&) throw();<br />
879 T template <class U> allocator(const allocator<U>&) 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<void>::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& val);<br />
888 T void destroy(pointer p);<br />
891 20.4.1.2 allocator globals [lib.allocator.globals]<br />
893 T template <class T1, class T2><br />
894 bool operator==(const allocator<T1>&, const allocator<T2>&) throw();<br />
895 T template <class T1, class T2><br />
896 bool operator!=(const allocator<T1>&, const allocator<T2>&) throw();<br />
898 20.4.2 Raw storage iterator [lib.storage.iterator]<br />
900 T template <class OutputIterator, class T><br />
901 class raw_storage_iterator<br />
902 : public iterator<output_iterator_tag,void,void,void,void> {<br />
904 T explicit raw_storage_iterator(OutputIterator x);<br />
905 T raw_storage_iterator<OutputIterator,T>& operator*();<br />
906 T raw_storage_iterator<OutputIterator,T>& operator=(const T& element);<br />
907 T raw_storage_iterator<OutputIterator,T>& operator++();<br />
908 T raw_storage_iterator<OutputIterator,T> operator++(int);<br />
911 20.4.3 Temporary buffers [lib.temporary.buffer]<br />
913 T template <class T><br />
914 pair<T*, ptrdiff_t> get_temporary_buffer(ptrdiff_t n);<br />
916 T template <class T> void return_temporary_buffer(T* p);<br />
918 20.4.4 Specialized algorithms [lib.specialized.algorithms]<br />
920 20.4.4.1 uninitialized_copy [lib.uninitialized.copy]<br />
922 V template <class InputIterator, class ForwardIterator><br />
923 ForwardIterator<br />
924 uninitialized_copy(InputIterator first, InputIterator last,<br />
925 ForwardIterator result);<br />
927 20.4.4.2 uninitialized_fill [lib.uninitialized.fill]<br />
929 V template <class ForwardIterator, class T><br />
930 void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
931 const T& x);<br />
933 20.4.4.3 uninitialized_fill_n [lib.uninitialized.fill.n]<br />
935 V template <class ForwardIterator, class Size, class T><br />
936 void uninitialized_fill_n(ForwardIterator first, Size n, const T& x);<br />
938 20.4.5 Template class auto_ptr [lib.auto.ptr]<br />
940 X template<class X> class auto_ptr {<br />
941 template <class Y> struct auto_ptr_ref {};<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&) throw();<br />
947 T template<class Y> auto_ptr(auto_ptr<Y>&) throw();<br />
948 T auto_ptr& operator=(auto_ptr&) throw();<br />
949 T template<class Y> auto_ptr& operator=(auto_ptr<Y>&) throw();<br />
950 T ~auto_ptr() throw();<br />
951 // _lib.auto.ptr.members_ members:<br />
952 T X& operator*() const throw();<br />
953 T X* operator->() 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 />
958 // _lib.auto.ptr.conv_ conversions:<br />
959 X auto_ptr(auto_ptr_ref<X>) throw();<br />
960 X template<class Y> operator auto_ptr_ref<Y>() throw();<br />
961 X template<class Y> operator auto_ptr<Y>() throw();<br />
964 20.4.6 C Library [lib.c.malloc]<br />
966 Table 7--Header <cstdlib> synopsis<br />
968 X Functions: calloc malloc<br />
972 Table 8--Header <cstring> synopsis<br />
976 X Functions: memchr memcmp<br />
977 X memcpy memmove memset<br />
979 Table 9--Header <ctime> synopsis<br />
982 X Types: size_t clock_t time_t<br />
985 X asctime clock difftime localtime strftime<br />
986 X ctime gmtime mktime time<br />
988 21.1.1 Character traits requirements [lib.char.traits.require]<br />
990 2 The struct template<br />
991 T template<class charT> struct char_traits;<br />
992 shall be provided in the header <string> as a basis for explicit spe-<br />
996 21.1.3.1 struct [lib.char.traits.specializations.char]<br />
997 char_traits<char><br />
999 T template<><br />
1000 struct char_traits<char> {<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 />
1007 T static void assign(char_type& c1, const char_type& c2);<br />
1008 T static bool eq(const char_type& c1, const char_type& c2);<br />
1009 T static bool lt(const char_type& c1, const char_type& c2);<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& 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 />
1019 T static int_type not_eof(const int_type& c);<br />
1020 T static char_type to_char_type(const int_type& c);<br />
1021 T static int_type to_int_type(const char_type& c);<br />
1022 T static bool eq_int_type(const int_type& c1, const int_type& c2);<br />
1023 T static int_type eof();<br />
1026 21.1.3.2 struct [lib.char.traits.specializations.wchar.t]<br />
1027 char_traits<wchar_t><br />
1029 V template<><br />
1030 struct char_traits<wchar_t> {<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 />
1037 V static void assign(char_type& c1, const char_type& c2);<br />
1038 V static bool eq(const char_type& c1, const char_type& c2);<br />
1039 V static bool lt(const char_type& c1, const char_type& c2);<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& 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 />
1049 V static int_type not_eof(const int_type& c);<br />
1050 V static char_type to_char_type(const int_type& c);<br />
1051 V static int_type to_int_type(const char_type& c);<br />
1052 V static bool eq_int_type(const int_type& c1, const int_type& c2);<br />
1053 V static int_type eof();<br />
1056 21.2 String classes [lib.string.classes]<br />
1058 // _lib.char.traits_, character traits:<br />
1059 V template<class charT><br />
1060 struct char_traits;<br />
1061 V template <> struct char_traits<char>;<br />
1062 V template <> struct char_traits<wchar_t>;<br />
1064 // _lib.basic.string_, basic_string:<br />
1065 V template<class charT, class traits = char_traits<charT>,<br />
1066 class Allocator = allocator<charT> ><br />
1067 class basic_string;<br />
1068 V template<class charT, class traits, class Allocator><br />
1069 basic_string<charT,traits,Allocator><br />
1070 operator+(const basic_string<charT,traits,Allocator>& lhs,<br />
1071 const basic_string<charT,traits,Allocator>& rhs);<br />
1072 V template<class charT, class traits, class Allocator><br />
1073 basic_string<charT,traits,Allocator><br />
1074 operator+(const charT* lhs,<br />
1075 const basic_string<charT,traits,Allocator>& rhs);<br />
1076 V template<class charT, class traits, class Allocator><br />
1077 basic_string<charT,traits,Allocator><br />
1078 operator+(charT lhs, const basic_string<charT,traits,Allocator>& rhs);<br />
1079 V template<class charT, class traits, class Allocator><br />
1080 basic_string<charT,traits,Allocator><br />
1081 operator+(const basic_string<charT,traits,Allocator>& lhs,<br />
1082 const charT* rhs);<br />
1083 V template<class charT, class traits, class Allocator><br />
1084 basic_string<charT,traits,Allocator><br />
1085 operator+(const basic_string<charT,traits,Allocator>& lhs, charT rhs);<br />
1087 V template<class charT, class traits, class Allocator><br />
1088 bool operator==(const basic_string<charT,traits,Allocator>& lhs,<br />
1089 const basic_string<charT,traits,Allocator>& rhs);<br />
1090 V template<class charT, class traits, class Allocator><br />
1091 bool operator==(const charT* lhs,<br />
1092 const basic_string<charT,traits,Allocator>& rhs);<br />
1093 V template<class charT, class traits, class Allocator><br />
1094 bool operator==(const basic_string<charT,traits,Allocator>& lhs,<br />
1095 const charT* rhs);<br />
1096 V template<class charT, class traits, class Allocator><br />
1097 bool operator!=(const basic_string<charT,traits,Allocator>& lhs,<br />
1098 const basic_string<charT,traits,Allocator>& rhs);<br />
1099 V template<class charT, class traits, class Allocator><br />
1100 bool operator!=(const charT* lhs,<br />
1101 const basic_string<charT,traits,Allocator>& rhs);<br />
1102 V template<class charT, class traits, class Allocator><br />
1103 bool operator!=(const basic_string<charT,traits,Allocator>& lhs,<br />
1104 const charT* rhs);<br />
1105 V template<class charT, class traits, class Allocator><br />
1106 bool operator< (const basic_string<charT,traits,Allocator>& lhs,<br />
1107 const basic_string<charT,traits,Allocator>& rhs);<br />
1108 V template<class charT, class traits, class Allocator><br />
1109 bool operator< (const basic_string<charT,traits,Allocator>& lhs,<br />
1110 const charT* rhs);<br />
1111 V template<class charT, class traits, class Allocator><br />
1112 bool operator< (const charT* lhs,<br />
1113 const basic_string<charT,traits,Allocator>& rhs);<br />
1114 V template<class charT, class traits, class Allocator><br />
1115 bool operator> (const basic_string<charT,traits,Allocator>& lhs,<br />
1116 const basic_string<charT,traits,Allocator>& rhs);<br />
1117 V template<class charT, class traits, class Allocator><br />
1118 bool operator> (const basic_string<charT,traits,Allocator>& lhs,<br />
1119 const charT* rhs);<br />
1120 V template<class charT, class traits, class Allocator><br />
1121 bool operator> (const charT* lhs,<br />
1122 const basic_string<charT,traits,Allocator>& rhs);<br />
1123 V template<class charT, class traits, class Allocator><br />
1124 bool operator<=(const basic_string<charT,traits,Allocator>& lhs,<br />
1125 const basic_string<charT,traits,Allocator>& rhs);<br />
1126 V template<class charT, class traits, class Allocator><br />
1127 bool operator<=(const basic_string<charT,traits,Allocator>& lhs,<br />
1128 const charT* rhs);<br />
1129 V template<class charT, class traits, class Allocator><br />
1130 bool operator<=(const charT* lhs,<br />
1131 const basic_string<charT,traits,Allocator>& rhs);<br />
1132 V template<class charT, class traits, class Allocator><br />
1133 bool operator>=(const basic_string<charT,traits,Allocator>& lhs,<br />
1134 const basic_string<charT,traits,Allocator>& rhs);<br />
1135 V template<class charT, class traits, class Allocator><br />
1136 bool operator>=(const basic_string<charT,traits,Allocator>& lhs,<br />
1137 const charT* rhs);<br />
1138 V template<class charT, class traits, class Allocator><br />
1139 bool operator>=(const charT* lhs,<br />
1140 const basic_string<charT,traits,Allocator>& rhs);<br />
1142 // _lib.string.special_:<br />
1143 V template<class charT, class traits, class Allocator><br />
1144 void swap(basic_string<charT,traits,Allocator>& lhs,<br />
1145 basic_string<charT,traits,Allocator>& rhs);<br />
1146 V template<class charT, class traits, class Allocator><br />
1147 basic_istream<charT,traits>&<br />
1148 operator>>(basic_istream<charT,traits>& is,<br />
1149 basic_string<charT,traits,Allocator>& str);<br />
1150 T template<class charT, class traits, class Allocator><br />
1151 basic_ostream<charT, traits>&<br />
1152 operator<<(basic_ostream<charT, traits>& os,<br />
1153 const basic_string<charT,traits,Allocator>& str);<br />
1154 V template<class charT, class traits, class Allocator><br />
1155 basic_istream<charT,traits>&<br />
1156 getline(basic_istream<charT,traits>& is,<br />
1157 basic_string<charT,traits,Allocator>& str,<br />
1159 V template<class charT, class traits, class Allocator><br />
1160 basic_istream<charT,traits>&<br />
1161 getline(basic_istream<charT,traits>& is,<br />
1162 basic_string<charT,traits,Allocator>& str);<br />
1163 V typedef basic_string<char> string;<br />
1164 T typedef basic_string<wchar_t> wstring;<br />
1167 21.3 Template class basic_string [lib.basic.string]<br />
1169 V namespace std {<br />
1170 template<class charT, class traits = char_traits<charT>,<br />
1171 class Allocator = allocator<charT> ><br />
1172 class basic_string {<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<iterator> reverse_iterator;<br />
1187 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
1188 static const size_type npos = -1;<br />
1190 // _lib.string.cons_ construct/copy/destroy:<br />
1191 V explicit basic_string(const Allocator& a = Allocator());<br />
1192 V basic_string(const basic_string& str, size_type pos = 0,<br />
1193 size_type n = npos, const Allocator& a = Allocator());<br />
1194 V basic_string(const charT* s,<br />
1195 size_type n, const Allocator& a = Allocator());<br />
1196 V basic_string(const charT* s, const Allocator& a = Allocator());<br />
1197 V basic_string(size_type n, charT c, const Allocator& a = Allocator());<br />
1198 V template<class InputIterator><br />
1199 basic_string(InputIterator begin, InputIterator end,<br />
1200 const Allocator& a = Allocator());<br />
1201 V ~basic_string();<br />
1202 V basic_string& operator=(const basic_string& str);<br />
1203 V basic_string& operator=(const charT* s);<br />
1204 V basic_string& 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 />
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& operator+=(const basic_string& str);<br />
1232 V basic_string& operator+=(const charT* s);<br />
1233 V basic_string& operator+=(charT c);<br />
1234 V basic_string& append(const basic_string& str);<br />
1235 V basic_string& append(const basic_string& str, size_type pos,<br />
1237 V basic_string& append(const charT* s, size_type n);<br />
1238 V basic_string& append(const charT* s);<br />
1239 V basic_string& append(size_type n, charT c);<br />
1240 V template<class InputIterator><br />
1241 basic_string& append(InputIterator first, InputIterator last);<br />
1242 V void push_back(const charT);<br />
1244 V basic_string& assign(const basic_string&);<br />
1245 V basic_string& assign(const basic_string& str, size_type pos,<br />
1247 V basic_string& assign(const charT* s, size_type n);<br />
1248 V basic_string& assign(const charT* s);<br />
1249 V basic_string& assign(size_type n, charT c);<br />
1250 V template<class InputIterator><br />
1251 basic_string& assign(InputIterator first, InputIterator last);<br />
1252 V basic_string& insert(size_type pos1, const basic_string& str);<br />
1253 V basic_string& insert(size_type pos1, const basic_string& str,<br />
1254 size_type pos2, size_type n);<br />
1255 V basic_string& insert(size_type pos, const charT* s, size_type n);<br />
1256 V basic_string& insert(size_type pos, const charT* s);<br />
1257 V basic_string& 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<class InputIterator><br />
1261 void insert(iterator p, InputIterator first, InputIterator last);<br />
1262 V basic_string& 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& replace(size_type pos1, size_type n1,<br />
1266 const basic_string& str);<br />
1267 V basic_string& replace(size_type pos1, size_type n1,<br />
1268 const basic_string& str,<br />
1269 size_type pos2, size_type n2);<br />
1270 V basic_string& replace(size_type pos, size_type n1, const charT* s,<br />
1271 size_type n2);<br />
1272 V basic_string& replace(size_type pos, size_type n1, const charT* s);<br />
1273 V basic_string& replace(size_type pos, size_type n1, size_type n2,<br />
1275 V basic_string& replace(iterator i1, iterator i2, const basic_string& str);<br />
1276 V basic_string& replace(iterator i1, iterator i2, const charT* s,<br />
1278 V basic_string& replace(iterator i1, iterator i2, const charT* s);<br />
1279 V basic_string& replace(iterator i1, iterator i2,<br />
1280 size_type n, charT c);<br />
1281 V template<class InputIterator><br />
1282 basic_string& 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<charT,traits,Allocator>&);<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& 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& 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 />
1299 V size_type find_first_of(const basic_string& 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& 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& 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& 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& str) const;<br />
1326 V int compare(size_type pos1, size_type n1,<br />
1327 const basic_string& str) const;<br />
1328 V int compare(size_type pos1, size_type n1,<br />
1329 const basic_string& 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 />
1337 21.4 Null-terminated sequence utilities [lib.c.strings]<br />
1339 Table 10--Header <cctype> synopsis<br />
1341 isalnum isdigit isprint isupper tolower<br />
1342 X isalpha isgraph ispunct isxdigit toupper<br />
1343 iscntrl islower isspace<br />
1345 Table 11--Header <cwctype> synopsis<br />
1347 X Macro: WEOF <cwctype><br />
1348 X Types: wctrans_t wctype_t wint_t <cwctype><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 />
1354 Table 12--Header <cstring> synopsis<br />
1356 X Macro: NULL <cstring><br />
1357 X Type: size_t <cstring><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 />
1365 Table 13--Header <cwchar> synopsis<br />
1366 Macros: NULL <cwchar> WCHAR_MAX WCHAR_MIN WEOF <cwchar><br />
1367 Types: mbstate_t wint_t <cwchar> size_t<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 />
1379 Table 14--Header <cstdlib> synopsis<br />
1381 Macros: MB_CUR_MAX<br />
1383 X atol mblen strtod wctomb<br />
1384 X atof mbstowcs strtol wcstombs<br />
1385 X atoi mbtowc strtoul<br />
1387 X const char* strchr(const char* s, int c);<br />
1388 X char* strchr( char* s, int c);<br />
1390 X const char* strpbrk(const char* s1, const char* s2);<br />
1391 X char* strpbrk( char* s1, const char* s2);<br />
1393 X const char* strrchr(const char* s, int c);<br />
1394 X char* strrchr( char* s, int c);<br />
1396 X const char* strstr(const char* s1, const char* s2);<br />
1397 X char* strstr( char* s1, const char* s2);<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 />
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 />
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 />
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 />
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 />
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 />
1417 [for initial efforts on the above, see shadow/string.h]<br />
1419 22.1 Locales [lib.locales]<br />
1421 Header <locale> synopsis<br />
1423 // _lib.locale_, locale:<br />
1424 T class locale;<br />
1425 T template <class Facet> const Facet& use_facet(const locale&);<br />
1426 T template <class Facet> bool has_facet(const locale&) throw();<br />
1428 // _lib.locale.convenience_, convenience interfaces:<br />
1429 T template <class charT> bool isspace (charT c, const locale& loc);<br />
1430 T template <class charT> bool isprint (charT c, const locale& loc);<br />
1431 T template <class charT> bool iscntrl (charT c, const locale& loc);<br />
1432 T template <class charT> bool isupper (charT c, const locale& loc);<br />
1433 T template <class charT> bool islower (charT c, const locale& loc);<br />
1434 T template <class charT> bool isalpha (charT c, const locale& loc);<br />
1435 T template <class charT> bool isdigit (charT c, const locale& loc);<br />
1436 T template <class charT> bool ispunct (charT c, const locale& loc);<br />
1437 T template <class charT> bool isxdigit(charT c, const locale& loc);<br />
1438 T template <class charT> bool isalnum (charT c, const locale& loc);<br />
1439 T template <class charT> bool isgraph (charT c, const locale& loc);<br />
1440 T template <class charT> charT toupper(charT c, const locale& loc);<br />
1441 T template <class charT> charT tolower(charT c, const locale& loc);<br />
1442 // _lib.category.ctype_ and _lib.facet.ctype.special_, ctype:<br />
1443 class ctype_base;<br />
1444 T template <class charT> class ctype;<br />
1445 T template <> class ctype<char>; // specialization<br />
1446 S template <class charT> class ctype_byname;<br />
1447 S template <> class ctype_byname<char>; // specialization<br />
1448 T class codecvt_base;<br />
1449 X template <class internT, class externT, class stateT> class codecvt;<br />
1450 S template <class internT, class externT, class stateT> class codecvt_byname;<br />
1451 // _lib.category.numeric_ and _lib.facet.numpunct_, numeric:<br />
1452 X template <class charT, class InputIterator> class num_get;<br />
1453 X template <class charT, class OutputIterator> class num_put;<br />
1454 T template <class charT> class numpunct;<br />
1455 S template <class charT> class numpunct_byname;<br />
1456 // _lib.category.collate_, collation:<br />
1457 T template <class charT> class collate;<br />
1458 S template <class charT> class collate_byname;<br />
1459 // _lib.category.time_, date and time:<br />
1460 T class time_base;<br />
1461 S template <class charT, class InputIterator> class time_get;<br />
1462 S template <class charT, class InputIterator> class time_get_byname;<br />
1463 S template <class charT, class OutputIterator> class time_put;<br />
1464 S template <class charT, class OutputIterator> class time_put_byname;<br />
1465 // _lib.category.monetary_, money:<br />
1466 T class money_base;<br />
1467 S template <class charT, class InputIterator> class money_get;<br />
1468 S template <class charT, class OutputIterator> class money_put;<br />
1469 S template <class charT, bool Intl> class moneypunct;<br />
1470 S template <class charT, bool Intl> class moneypunct_byname;<br />
1471 // _lib.category.messages_, message retrieval:<br />
1472 T class messages_base;<br />
1473 S template <class charT> class messages;<br />
1474 S template <class charT> class messages_byname;<br />
1477 22.1.1 Class locale [lib.locale]<br />
1479 X class locale {<br />
1482 T class facet;<br />
1484 T typedef int category;<br />
1485 T static const category // values assigned here are for exposition only<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& other) throw()<br />
1494 X explicit locale(const char* std_name);<br />
1495 X locale(const locale& other, const char* std_name, category);<br />
1496 T template <class Facet> locale(const locale& other, Facet* f);<br />
1497 T locale(const locale& other, const locale& one, category);<br />
1498 T ~locale() throw(); // non-virtual<br />
1499 T const locale& operator=(const locale& other) throw();<br />
1500 T template <class Facet> locale combine(const locale& other) const;<br />
1501 // locale operations:<br />
1502 X basic_string<char> name() const;<br />
1503 T bool operator==(const locale& other) const;<br />
1504 T bool operator!=(const locale& other) const;<br />
1505 T template <class charT, class Traits, class Allocator><br />
1506 bool operator()(const basic_string<charT,Traits,Allocator>& s1,<br />
1507 const basic_string<charT,Traits,Allocator>& s2) const;<br />
1508 // global locale objects:<br />
1509 T static locale global(const locale&);<br />
1510 T static const locale& classic();<br />
1513 22.1.1.1 locale types [lib.locale.types]<br />
1515 22.1.1.1.1 Type locale::category [lib.locale.category]<br />
1517 T typedef int category;<br />
1519 T none, collate, ctype, monetary, numeric, time, and messages<br />
1521 [required locale members]<br />
1522 T collate<char>, collate<wchar_t><br />
1523 T ctype<char>, ctype<wchar_t><br />
1524 T codecvt<char,char,mbstate_t>,<br />
1525 S codecvt<wchar_t,char,mbstate_t><br />
1526 T moneypunct<char>, moneypunct<wchar_t><br />
1527 T moneypunct<char,true>, moneypunct<wchar_t,true>,<br />
1528 S money_get<char>, money_get<wchar_t<br />
1529 S money_put<char>, money_put<wchar_t><br />
1530 T numpunct<char>, numpunct<wchar_t>,<br />
1531 X num_get<char>, num_get<wchar_t><br />
1532 X num_put<char>, num_put<wchar_t><br />
1533 S time_get<char>, time_get<wchar_t>,<br />
1534 S time_put<char>, time_put<wchar_t><br />
1535 S messages<char>, messages<wchar_t><br />
1537 [required instantiations]<br />
1538 S collate_byname<char>, collate_byname<wchar_t><br />
1539 S ctype_byname<char>, ctype_byname<wchar_t><br />
1540 S codecvt_byname<char,char,mbstate_t>,<br />
1541 S codecvt_byname<wchar_t,char,mbstate_t><br />
1542 S moneypunct_byname<char,International>,<br />
1543 S moneypunct_byname<wchar_t,International>,<br />
1544 S money_get<C,InputIterator>,<br />
1545 S money_put<C,OutputIterator><br />
1546 S numpunct_byname<char>, numpunct_byname<wchar_t><br />
1547 X num_get<C,InputIterator>, num_put<C,OutputIterator><br />
1548 S time_get<char,InputIterator>,<br />
1549 S time_get_byname<char,InputIterator>,<br />
1550 S time_get<wchar_t,OutputIterator>,<br />
1551 S time_get_byname<wchar_t,OutputIterator>,<br />
1552 S time_put<char,OutputIterator>,<br />
1553 S time_put_byname<char,OutputIterator>,<br />
1554 S time_put<wchar_t,OutputIterator><br />
1555 S time_put_byname<wchar_t,OutputIterator><br />
1556 S messages_byname<char>, messages_byname<wchar_t><br />
1559 22.1.1.1.2 Class locale::facet [lib.locale.facet]<br />
1561 T class locale::facet {<br />
1563 T explicit facet(size_t refs = 0);<br />
1564 T virtual ~facet();<br />
1566 T facet(const facet&); // not defined<br />
1567 T void operator=(const facet&); // not defined<br />
1572 22.1.1.1.3 Class locale::id [lib.locale.id]<br />
1574 T class locale::id {<br />
1578 T void operator=(const id&); // not defined<br />
1579 T id(const id&); // not defined<br />
1584 22.2.1 The ctype category [lib.category.ctype]<br />
1586 T class ctype_base {<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 />
1596 22.2.1.1 Template class ctype [lib.locale.ctype]<br />
1598 T template <class charT><br />
1599 class ctype : public locale::facet, public ctype_base {<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 />
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 />
1642 22.2.1.2 Template class ctype_byname [lib.locale.ctype.byname]<br />
1644 X template <class charT><br />
1645 class ctype_byname : public ctype<charT> {<br />
1647 T typedef ctype<charT>::mask mask;<br />
1648 S explicit ctype_byname(const char*, size_t refs = 0);<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 />
1670 22.2.1.3 ctype specializations [lib.facet.ctype.special]<br />
1672 T template <> class ctype<char><br />
1673 : public locale::facet, public ctype_base {<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 />
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 />
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 />
1716 22.2.1.4 Class [lib.locale.ctype.byname.special]<br />
1717 ctype_byname<char><br />
1719 X template <> class ctype_byname<char> : public ctype<char> {<br />
1721 S explicit ctype_byname(const char*, size_t refs = 0);<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 />
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 />
1740 22.2.1.5 Template class codecvt [lib.locale.codecvt]<br />
1742 T class codecvt_base {<br />
1744 T enum result { ok, partial, error, noconv };<br />
1747 T template <class internT, class externT, class stateT><br />
1748 class codecvt : public locale::facet, public codecvt_base {<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& state,<br />
1755 const internT* from, const internT* from_end, const internT*& from_next,<br />
1756 externT* to, externT* to_limit, externT*& to_next) const;<br />
1757 T result unshift(stateT& state,<br />
1758 externT* to, externT* to_limit, externT*& to_next) const;<br />
1759 T result in(stateT& state,<br />
1760 const externT* from, const externT* from_end, const externT*& from_next,<br />
1761 internT* to, internT* to_limit, internT*& 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&, 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 />
1770 T ~codecvt(); // virtual<br />
1771 T virtual result do_out(stateT& state,<br />
1772 const internT* from, const internT* from_end, const internT*& from_next,<br />
1773 externT* to, externT* to_limit, externT*& to_next) const;<br />
1774 T virtual result do_in(stateT& state,<br />
1775 T const externT* from, const externT* from_end, const externT*& from_next,<br />
1776 internT* to, internT* to_limit, internT*& to_next) const;<br />
1777 T virtual result do_unshift(stateT& state,<br />
1778 externT* to, externT* to_limit, externT*& 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&, const externT* from,<br />
1782 const externT* end, size_t max) const;<br />
1783 T virtual int do_max_length() const throw();<br />
1788 22.2.1.6 Template class [lib.locale.codecvt.byname]<br />
1789 codecvt_byname<br />
1791 X template <class internT, class externT, class stateT><br />
1792 class codecvt_byname : public codecvt<internT, externT, stateT> {<br />
1794 S explicit codecvt_byname(const char*, size_t refs = 0);<br />
1796 S ~codecvt_byname(); // virtual<br />
1797 S virtual result do_out(stateT& state,<br />
1798 const internT* from, const internT* from_end, const internT*& from_next,<br />
1799 externT* to, externT* to_limit, externT*& to_next) const;<br />
1800 S virtual result do_in(stateT& state,<br />
1801 const externT* from, const externT* from_end, const externT*& from_next,<br />
1802 internT* to, internT* to_limit, internT*& to_next) const;<br />
1803 S virtual result do_unshift(stateT& state,<br />
1804 externT* to, externT* to_limit, externT*& 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&, const externT* from,<br />
1808 const externT* end, size_t max) const;<br />
1809 S virtual result do_unshift(stateT& state,<br />
1810 externT* to, externT* to_limit, externT*& to_next) const;<br />
1811 S virtual int do_max_length() const throw();<br />
1815 22.2.2.1 Template class num_get [lib.locale.num.get]<br />
1817 X template <class charT, class InputIterator = istreambuf_iterator<charT> ><br />
1818 class num_get : public locale::facet {<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&,<br />
1824 ios_base::iostate& err, bool& v) const;<br />
1825 T iter_type get(iter_type in, iter_type end, ios_base& ,<br />
1826 ios_base::iostate& err, long& v) const;<br />
1827 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1828 ios_base::iostate& err, unsigned short& v) const;<br />
1829 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1830 ios_base::iostate& err, unsigned int& v) const;<br />
1831 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1832 ios_base::iostate& err, unsigned long& v) const;<br />
1833 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1834 ios_base::iostate& err, float& v) const;<br />
1835 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1836 ios_base::iostate& err, double& v) const;<br />
1837 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1838 ios_base::iostate& err, long double& v) const;<br />
1839 T iter_type get(iter_type in, iter_type end, ios_base&,<br />
1840 ios_base::iostate& err, void*& v) const;<br />
1841 T static locale::id id;<br />
1844 T ~num_get(); // virtual<br />
1845 T virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1846 ios_base::iostate& err, bool& v) const;<br />
1847 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1848 ios_base::iostate& err, long& v) const;<br />
1849 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1850 ios_base::iostate& err, unsigned short& v) const;<br />
1851 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1852 ios_base::iostate& err, unsigned int& v) const;<br />
1853 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1854 ios_base::iostate& err, unsigned long& v) const;<br />
1855 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1856 ios_base::iostate& err, float& v) const;<br />
1857 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1858 ios_base::iostate& err, double& v) const;<br />
1859 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1860 ios_base::iostate& err, long double& v) const;<br />
1861 S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
1862 ios_base::iostate& err, void*& v) const;<br />
1867 22.2.2.2 Template class num_put [lib.locale.nm.put]<br />
1869 X template <class charT, class OutputIterator = ostreambuf_iterator<charT> ><br />
1870 class num_put : public locale::facet {<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& f, char_type fill, bool v) const;<br />
1876 T iter_type put(iter_type s, ios_base& f, char_type fill, long v) const;<br />
1877 T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
1878 unsigned long v) const;<br />
1879 T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
1880 double v) const;<br />
1881 T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
1882 long double v) const;<br />
1883 T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
1884 const void* v) const;<br />
1885 T static locale::id id;<br />
1887 T ~num_put(); // virtual<br />
1888 T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
1889 bool v) const;<br />
1890 T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
1891 long v) const;<br />
1892 T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
1893 unsigned long) const;<br />
1894 S virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
1895 double v) const;<br />
1896 S virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
1897 long double v) const;<br />
1898 T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
1899 const void* v) const;<br />
1903 22.2.3.1 Template class numpunct [lib.locale.numpunct]<br />
1905 T template <class charT><br />
1906 class numpunct : public locale::facet {<br />
1908 T typedef charT char_type;<br />
1909 T typedef basic_string<charT> 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 />
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 />
1929 22.2.3.2 Template class [lib.locale.numpunct.byname]<br />
1930 numpunct_byname<br />
1932 X template <class charT><br />
1933 class numpunct_byname : public numpunct<charT> {<br />
1934 // this class is specialized for char and wchar_t.<br />
1936 T typedef charT char_type;<br />
1937 T typedef basic_string<charT> string_type;<br />
1938 S explicit numpunct_byname(const char*, size_t refs = 0);<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 />
1949 22.2.4.1 Template class collate [lib.locale.collate]<br />
1951 T template <class charT><br />
1952 class collate : public locale::facet {<br />
1954 T typedef charT char_type;<br />
1955 T typedef basic_string<charT> 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 />
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 />
1972 22.2.4.2 Template class [lib.locale.collate.byname]<br />
1973 collate_byname<br />
1975 X template <class charT><br />
1976 class collate_byname : public collate<charT> {<br />
1978 T typedef basic_string<charT> string_type;<br />
1979 T explicit collate_byname(const char*, size_t refs = 0);<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 />
1990 22.2.5.1 Template class time_get [lib.locale.time.get]<br />
1992 T class time_base {<br />
1994 T enum dateorder { no_order, dmy, mdy, ymd, ydm };<br />
1997 [Note: semantics of time_get members are implementation-defined.<br />
1998 To complete implementation requires documenting behavior.]<br />
2000 X template <class charT, class InputIterator = istreambuf_iterator<charT> ><br />
2001 class time_get : public locale::facet, public time_base {<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 />
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& f,<br />
2009 ios_base::iostate& err, tm* t) const;<br />
2010 T iter_type get_date(iter_type s, iter_type end, ios_base& f,<br />
2011 ios_base::iostate& err, tm* t) const;<br />
2012 T iter_type get_weekday(iter_type s, iter_type end, ios_base& f,<br />
2013 ios_base::iostate& err, tm* t) const;<br />
2014 T iter_type get_monthname(iter_type s, iter_type end, ios_base& f,<br />
2015 ios_base::iostate& err, tm* t) const;<br />
2016 T iter_type get_year(iter_type s, iter_type end, ios_base& f,<br />
2017 ios_base::iostate& err, tm* t) const;<br />
2018 T static locale::id id;<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&,<br />
2023 ios_base::iostate& err, tm* t) const;<br />
2024 S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&,<br />
2025 ios_base::iostate& err, tm* t) const;<br />
2026 S virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&,<br />
2027 ios_base::iostate& err, tm* t) const;<br />
2028 S virtual iter_type do_get_monthname(iter_type s, ios_base&,<br />
2029 ios_base::iostate& err, tm* t) const;<br />
2030 S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&,<br />
2031 ios_base::iostate& err, tm* t) const;<br />
2036 22.2.5.2 Template class [lib.locale.time.get.byname]<br />
2037 time_get_byname<br />
2039 X template <class charT, class InputIterator = istreambuf_iterator<charT> ><br />
2040 class time_get_byname : public time_get<charT, InputIterator> {<br />
2042 T typedef time_base::dateorder dateorder;<br />
2043 T typedef InputIterator iter_type<br />
2045 S explicit time_get_byname(const char*, size_t refs = 0);<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&,<br />
2050 ios_base::iostate& err, tm* t) const;<br />
2051 S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&,<br />
2052 ios_base::iostate& err, tm* t) const;<br />
2053 T virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&,<br />
2054 ios_base::iostate& err, tm* t) const;<br />
2055 T virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&,<br />
2056 ios_base::iostate& err, tm* t) const;<br />
2057 S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&,<br />
2058 ios_base::iostate& err, tm* t) const;<br />
2062 22.2.5.3 Template class time_put [lib.locale.time.put]<br />
2064 X template <class charT, class OutputIterator = ostreambuf_iterator<charT> ><br />
2065 class time_put : public locale::facet {<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& 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& f, char_type fill,<br />
2074 const tm* tmb, char format, char modifier = 0) const;<br />
2075 T static locale::id id;<br />
2077 T ~time_put(); // virtual<br />
2078 S virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t,<br />
2079 char format, char modifier) const;<br />
2084 22.2.5.4 Template class [lib.locale.time.put.byname]<br />
2085 time_put_byname<br />
2087 T template <class charT, class OutputIterator = ostreambuf_iterator<charT> ><br />
2088 class time_put_byname : public time_put<charT, OutputIterator><br />
2091 T typedef charT char_type;<br />
2092 T typedef OutputIterator iter_type;<br />
2094 T explicit time_put_byname(const char*, size_t refs = 0);<br />
2096 T ~time_put_byname(); // virtual<br />
2097 S virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t,<br />
2098 char format, char modifier) const;<br />
2102 22.2.6.1 Template class money_get [lib.locale.money.get]<br />
2104 X template <class charT,<br />
2105 class InputIterator = istreambuf_iterator<charT> ><br />
2106 class money_get : public locale::facet {<br />
2108 T typedef charT char_type;<br />
2109 T typedef InputIterator iter_type;<br />
2110 T typedef basic_string<charT> 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& f, ios_base::iostate& err,<br />
2114 long double& units) const;<br />
2115 T iter_type get(iter_type s, iter_type end, bool intl,<br />
2116 ios_base& f, ios_base::iostate& err,<br />
2117 string_type& digits) const;<br />
2118 T static locale::id id;<br />
2120 T ~money_get(); // virtual<br />
2121 S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&,<br />
2122 ios_base::iostate& err, long double& units) const;<br />
2123 S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&,<br />
2124 ios_base::iostate& err, string_type& digits) const;<br />
2127 22.2.6.2 Template class money_put [lib.locale.money.put]<br />
2129 X template <class charT,<br />
2130 class OutputIterator = ostreambuf_iterator<charT> ><br />
2131 class money_put : public locale::facet {<br />
2133 T typedef charT char_type;<br />
2134 T typedef OutputIterator iter_type;<br />
2135 T typedef basic_string<charT> 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& f,<br />
2138 char_type fill, long double units) const;<br />
2139 T iter_type put(iter_type s, bool intl, ios_base& f,<br />
2140 char_type fill, const string_type& digits) const;<br />
2141 T static locale::id id;<br />
2144 T ~money_put(); // virtual<br />
2145 S virtual iter_type<br />
2146 do_put(iter_type, bool, ios_base&, char_type fill,<br />
2147 long double units) const;<br />
2148 S virtual iter_type<br />
2149 do_put(iter_type, bool, ios_base&, char_type fill,<br />
2150 const string_type& digits) const;<br />
2154 22.2.6.3 Template class moneypunct [lib.locale.moneypunct]<br />
2156 T class money_base {<br />
2158 T enum part { none, space, symbol, sign, value };<br />
2159 T struct pattern { char field[4]; };<br />
2162 X template <class charT, bool International = false><br />
2163 class moneypunct : public locale::facet, public money_base {<br />
2165 T typedef charT char_type;<br />
2166 T typedef basic_string<charT> 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 />
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 />
2193 22.2.6.4 Template class [lib.locale.moneypunct.byname]<br />
2194 moneypunct_byname<br />
2196 X template <class charT, bool Intl = false><br />
2197 class moneypunct_byname : public moneypunct<charT, Intl> {<br />
2199 T typedef money_base::pattern pattern;<br />
2200 T typedef basic_string<charT> string_type;<br />
2202 T explicit moneypunct_byname(const char*, size_t refs = 0);<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 />
2216 22.2.7.1 Template class messages [lib.locale.messages]<br />
2218 T class messages_base {<br />
2220 T typedef int catalog;<br />
2223 X template <class charT><br />
2224 class messages : public locale::facet, public messages_base {<br />
2226 T typedef charT char_type;<br />
2227 T typedef basic_string<charT> string_type;<br />
2228 T explicit messages(size_t refs = 0);<br />
2229 T catalog open(const basic_string<char>& fn, const locale&) const;<br />
2230 T string_type get(catalog c, int set, int msgid,<br />
2231 const string_type& dfault) const;<br />
2232 T void close(catalog c) const;<br />
2233 T static locale::id id;<br />
2235 T ~messages(); // virtual<br />
2236 S virtual catalog do_open(const basic_string<char>&, const locale&) const;<br />
2237 S virtual string_type do_get(catalog, int set, int msgid,<br />
2238 const string_type& dfault) const;<br />
2239 S virtual void do_close(catalog) const;<br />
2242 22.2.7.2 Template class [lib.locale.messages.byname]<br />
2243 messages_byname<br />
2246 X template <class charT><br />
2247 class messages_byname : public messages<charT> {<br />
2249 T typedef messages_base::catalog catalog;<br />
2250 T typedef basic_string<charT> string_type;<br />
2252 T explicit messages_byname(const char*, size_t refs = 0);<br />
2254 T ~messages_byname(); // virtual<br />
2255 S virtual catalog do_open(const basic_string<char>&, const locale&) const;<br />
2256 S virtual string_type do_get(catalog, int set, int msgid,<br />
2257 const string_type& dfault) const;<br />
2258 S virtual void do_close(catalog) const;<br />
2262 22.3 C Library Locales [lib.c.locales]<br />
2265 Table 13--Header <clocale> synopsis<br />
2267 X LC_ALL LC_COLLATE LC_CTYPE<br />
2268 X LC_MONETARY LC_NUMERIC LC_TIME<br />
2270 X Struct: lconv<br />
2271 X Functions: localeconv setlocale<br />
2274 23.2 Sequences [lib.sequences]<br />
2276 <deque>, <list>, <queue>, <stack>, and <vector>.<br />
2278 Header <deque> synopsis<br />
2280 T template <class T, class Allocator = allocator<T> > class deque;<br />
2281 T template <class T, class Allocator><br />
2282 bool operator==(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
2283 T template <class T, class Allocator><br />
2284 bool operator< (const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
2285 T template <class T, class Allocator><br />
2286 bool operator!=(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
2287 T template <class T, class Allocator><br />
2288 bool operator> (const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
2289 T template <class T, class Allocator><br />
2290 bool operator>=(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
2291 T template <class T, class Allocator><br />
2292 bool operator<=(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
2293 T template <class T, class Allocator><br />
2294 void swap(deque<T,Allocator>& x, deque<T,Allocator>& y);<br />
2297 Header <list> synopsis<br />
2299 T template <class T, class Allocator = allocator<T> > class list;<br />
2300 T template <class T, class Allocator><br />
2301 bool operator==(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2302 T template <class T, class Allocator><br />
2303 bool operator< (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2304 T template <class T, class Allocator><br />
2305 bool operator!=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2306 T template <class T, class Allocator><br />
2307 bool operator> (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2308 T template <class T, class Allocator><br />
2309 bool operator>=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2310 T template <class T, class Allocator><br />
2311 bool operator<=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2312 T template <class T, class Allocator><br />
2313 void swap(list<T,Allocator>& x, list<T,Allocator>& y);<br />
2316 Header <queue> synopsis<br />
2318 namespace std {<br />
2319 T template <class T, class Container = deque<T> > class queue;<br />
2320 T template <class T, class Container><br />
2321 bool operator==(const queue<T, Container>& x,<br />
2322 const queue<T, Container>& y);<br />
2323 T template <class T, class Container><br />
2324 bool operator< (const queue<T, Container>& x,<br />
2325 const queue<T, Container>& y);<br />
2326 T template <class T, class Container><br />
2327 bool operator!=(const queue<T, Container>& x,<br />
2328 const queue<T, Container>& y);<br />
2329 T template <class T, class Container><br />
2330 bool operator> (const queue<T, Container>& x,<br />
2331 const queue<T, Container>& y);<br />
2332 T template <class T, class Container><br />
2333 bool operator>=(const queue<T, Container>& x,<br />
2334 const queue<T, Container>& y);<br />
2335 T template <class T, class Container><br />
2336 bool operator<=(const queue<T, Container>& x,<br />
2337 const queue<T, Container>& y);<br />
2338 T template <class T, class Container = vector<T>,<br />
2339 class Compare = less<typename Container::value_type> ><br />
2340 T class priority_queue;<br />
2343 Header <stack> synopsis<br />
2345 namespace std {<br />
2346 T template <class T, class Container = deque<T> > class stack;<br />
2347 T template <class T, class Container><br />
2348 bool operator==(const stack<T, Container>& x,<br />
2349 const stack<T, Container>& y);<br />
2350 T template <class T, class Container><br />
2351 bool operator< (const stack<T, Container>& x,<br />
2352 const stack<T, Container>& y);<br />
2353 T template <class T, class Container><br />
2354 bool operator!=(const stack<T, Container>& x,<br />
2355 const stack<T, Container>& y);<br />
2356 T template <class T, class Container><br />
2357 bool operator> (const stack<T, Container>& x,<br />
2358 const stack<T, Container>& y);<br />
2359 T template <class T, class Container><br />
2360 bool operator>=(const stack<T, Container>& x,<br />
2361 const stack<T, Container>& y);<br />
2362 T template <class T, class Container><br />
2363 bool operator<=(const stack<T, Container>& x,<br />
2364 const stack<T, Container>& y);<br />
2367 Header <vector> synopsis<br />
2369 T template <class T, class Allocator = allocator<T> > class vector;<br />
2371 T template <class T, class Allocator><br />
2372 bool operator==(const vector<T,Allocator>& x,<br />
2373 const vector<T,Allocator>& y);<br />
2374 T template <class T, class Allocator><br />
2375 bool operator< (const vector<T,Allocator>& x,<br />
2376 const vector<T,Allocator>& y);<br />
2377 T template <class T, class Allocator><br />
2378 bool operator!=(const vector<T,Allocator>& x,<br />
2379 const vector<T,Allocator>& y);<br />
2380 T template <class T, class Allocator><br />
2381 bool operator> (const vector<T,Allocator>& x,<br />
2382 const vector<T,Allocator>& y);<br />
2383 T template <class T, class Allocator><br />
2384 bool operator>=(const vector<T,Allocator>& x,<br />
2385 const vector<T,Allocator>& y);<br />
2386 T template <class T, class Allocator><br />
2387 bool operator<=(const vector<T,Allocator>& x,<br />
2388 const vector<T,Allocator>& y);<br />
2389 T template <class T, class Allocator><br />
2390 void swap(vector<T,Allocator>& x, vector<T,Allocator>& y);<br />
2392 T template <class Allocator> class vector<bool,Allocator>;<br />
2393 T template <class Allocator><br />
2394 bool operator==(const vector<bool,Allocator>& x,<br />
2395 const vector<bool,Allocator>& y);<br />
2396 T template <class Allocator><br />
2397 bool operator< (const vector<bool,Allocator>& x,<br />
2398 const vector<bool,Allocator>& y);<br />
2399 T template <class Allocator><br />
2400 bool operator!=(const vector<bool,Allocator>& x,<br />
2401 const vector<bool,Allocator>& y);<br />
2402 T template <class Allocator><br />
2403 bool operator> (const vector<bool,Allocator>& x,<br />
2404 const vector<bool,Allocator>& y);<br />
2405 T template <class Allocator><br />
2406 bool operator>=(const vector<bool,Allocator>& x,<br />
2407 const vector<bool,Allocator>& y);<br />
2408 T template <class Allocator><br />
2409 bool operator<=(const vector<bool,Allocator>& x,<br />
2410 const vector<bool,Allocator>& y);<br />
2411 T template <class Allocator><br />
2412 void swap(vector<bool,Allocator>& x, vector<bool,Allocator>& y);<br />
2415 23.2.1 Template class deque [lib.deque]<br />
2417 template <class T, class Allocator = allocator<T> ><br />
2418 T class deque {<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<iterator> reverse_iterator;<br />
2432 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
2433 // _lib.deque.cons_ construct/copy/destroy:<br />
2434 T explicit deque(const Allocator& = Allocator());<br />
2435 T explicit deque(size_type n, const T& value = T(),<br />
2436 const Allocator& = Allocator());<br />
2437 T template <class InputIterator><br />
2438 deque(InputIterator first, InputIterator last,<br />
2439 const Allocator& = Allocator());<br />
2440 T deque(const deque<T,Allocator>& x);<br />
2442 T deque<T,Allocator>& operator=(const deque<T,Allocator>& x);<br />
2443 T template <class InputIterator><br />
2444 void assign(InputIterator first, InputIterator last);<br />
2445 T void assign(size_type n, const T& t);<br />
2446 T allocator_type get_allocator() const;<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 />
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& x);<br />
2473 T void push_back(const T& x);<br />
2474 T iterator insert(iterator position, const T& x);<br />
2475 T void insert(iterator position, size_type n, const T& x);<br />
2476 T template <class InputIterator><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<T,Allocator>&);<br />
2484 T void clear();<br />
2486 T template <class T, class Allocator><br />
2487 bool operator==(const deque<T,Allocator>& x,<br />
2488 const deque<T,Allocator>& y);<br />
2489 T template <class T, class Allocator><br />
2490 bool operator< (const deque<T,Allocator>& x,<br />
2491 const deque<T,Allocator>& y);<br />
2492 T template <class T, class Allocator><br />
2493 bool operator!=(const deque<T,Allocator>& x,<br />
2494 const deque<T,Allocator>& y);<br />
2495 T template <class T, class Allocator><br />
2496 bool operator> (const deque<T,Allocator>& x,<br />
2497 const deque<T,Allocator>& y);<br />
2498 T template <class T, class Allocator><br />
2499 bool operator>=(const deque<T,Allocator>& x,<br />
2500 const deque<T,Allocator>& y);<br />
2501 T template <class T, class Allocator><br />
2502 bool operator<=(const deque<T,Allocator>& x,<br />
2503 const deque<T,Allocator>& y);<br />
2504 // specialized algorithms:<br />
2505 T template <class T, class Allocator><br />
2506 void swap(deque<T,Allocator>& x, deque<T,Allocator>& y);<br />
2509 23.2.2 Template class list [lib.list]<br />
2511 T template <class T, class Allocator = allocator<T> ><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<iterator> reverse_iterator;<br />
2526 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
2528 // _lib.list.cons_ construct/copy/destroy:<br />
2529 T explicit list(const Allocator& = Allocator());<br />
2530 T explicit list(size_type n, const T& value = T(),<br />
2531 const Allocator& = Allocator());<br />
2532 T template <class InputIterator><br />
2533 list(InputIterator first, InputIterator last,<br />
2534 const Allocator& = Allocator());<br />
2535 T list(const list<T,Allocator>& x);<br />
2537 T list<T,Allocator>& operator=(const list<T,Allocator>& x);<br />
2538 T template <class InputIterator><br />
2539 void assign(InputIterator first, InputIterator last);<br />
2540 T void assign(size_type n, const T& t);<br />
2541 T allocator_type get_allocator() const;<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& x);<br />
2563 T void pop_front();<br />
2564 T void push_back(const T& x);<br />
2565 T void pop_back();<br />
2566 T iterator insert(iterator position, const T& x);<br />
2567 T void insert(iterator position, size_type n, const T& x);<br />
2568 T template <class InputIterator><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<T,Allocator>&);<br />
2574 T void clear();<br />
2575 // _lib.list.ops_ list operations:<br />
2576 T void splice(iterator position, list<T,Allocator>& x);<br />
2577 T void splice(iterator position, list<T,Allocator>& x, iterator i);<br />
2578 T void splice(iterator position, list<T,Allocator>& x, iterator first,<br />
2579 iterator last);<br />
2580 T void remove(const T& value);<br />
2581 T template <class Predicate> void remove_if(Predicate pred);<br />
2583 T void unique();<br />
2584 T template <class BinaryPredicate><br />
2585 void unique(BinaryPredicate binary_pred);<br />
2586 T void merge(list<T,Allocator>& x);<br />
2587 T template <class Compare> void merge(list<T,Allocator>& x, Compare comp);<br />
2589 T template <class Compare> void sort(Compare comp);<br />
2590 void reverse();<br />
2592 T template <class T, class Allocator><br />
2593 bool operator==(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2594 T template <class T, class Allocator><br />
2595 bool operator< (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2596 T template <class T, class Allocator><br />
2597 bool operator!=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2598 T template <class T, class Allocator><br />
2599 bool operator> (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2600 T template <class T, class Allocator><br />
2601 bool operator>=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2602 T template <class T, class Allocator><br />
2603 bool operator<=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
2604 // specialized algorithms:<br />
2605 T template <class T, class Allocator><br />
2606 void swap(list<T,Allocator>& x, list<T,Allocator>& y);<br />
2609 23.2.3.1 Template class queue [lib.queue]<br />
2611 T template <class T, class Container = deque<T> ><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 />
2618 T Container c;<br />
2620 T explicit queue(const Container& = Container());<br />
2622 T bool empty() const { return c.empty(); }<br />
2623 T size_type size() const { return c.size(); }<br />
2624 T value_type& front() { return c.front(); }<br />
2625 T const value_type& front() const { return c.front(); }<br />
2626 T value_type& back() { return c.back(); }<br />
2627 T const value_type& back() const { return c.back(); }<br />
2628 T void push(const value_type& x) { c.push_back(x); }<br />
2629 T void pop() { c.pop_front(); }<br />
2632 T template <class T, class Container><br />
2633 bool operator==(const queue<T, Container>& x,<br />
2634 const queue<T, Container>& y);<br />
2635 T template <class T, class Container><br />
2636 bool operator< (const queue<T, Container>& x,<br />
2637 const queue<T, Container>& y);<br />
2638 T template <class T, class Container><br />
2639 bool operator!=(const queue<T, Container>& x,<br />
2640 const queue<T, Container>& y);<br />
2641 T template <class T, class Container><br />
2642 bool operator> (const queue<T, Container>& x,<br />
2643 const queue<T, Container>& y);<br />
2644 T template <class T, class Container><br />
2645 bool operator>=(const queue<T, Container>& x,<br />
2646 const queue<T, Container>& y);<br />
2647 T template <class T, class Container><br />
2648 bool operator<=(const queue<T, Container>& x,<br />
2649 const queue<T, Container>& y);<br />
2651 23.2.3.2 Template class priority_queue [lib.priority.queue]<br />
2653 T template <class T, class Container = vector<T>,<br />
2654 class Compare = less<typename Container::value_type> ><br />
2655 class priority_queue {<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 />
2661 T Container c;<br />
2662 T Compare comp;<br />
2664 T explicit priority_queue(const Compare& x = Compare(),<br />
2665 const Container& = Container());<br />
2666 T template <class InputIterator><br />
2667 priority_queue(InputIterator first, InputIterator last,<br />
2668 const Compare& x = Compare(),<br />
2669 const Container& = Container());<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& top() const { return c.front(); }<br />
2674 T void push(const value_type& x);<br />
2678 23.2.3.3 Template class stack [lib.stack]<br />
2680 T template <class T, class Container = deque<T> ><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 />
2687 T Container c;<br />
2689 T explicit stack(const Container& = Container());<br />
2691 T bool empty() const { return c.empty(); }<br />
2692 T size_type size() const { return c.size(); }<br />
2693 T value_type& top() { return c.back(); }<br />
2694 T const value_type& top() const { return c.back(); }<br />
2695 T void push(const value_type& x) { c.push_back(x); }<br />
2696 T void pop() { c.pop_back(); }<br />
2698 T template <class T, class Container><br />
2699 bool operator==(const stack<T, Container>& x,<br />
2700 const stack<T, Container>& y);<br />
2701 T template <class T, class Container><br />
2702 bool operator< (const stack<T, Container>& x,<br />
2703 const stack<T, Container>& y);<br />
2704 T template <class T, class Container><br />
2705 bool operator!=(const stack<T, Container>& x,<br />
2706 const stack<T, Container>& y);<br />
2707 T template <class T, class Container><br />
2708 bool operator> (const stack<T, Container>& x,<br />
2709 const stack<T, Container>& y);<br />
2710 T template <class T, class Container><br />
2711 bool operator>=(const stack<T, Container>& x,<br />
2712 const stack<T, Container>& y);<br />
2713 T template <class T, class Container><br />
2714 bool operator<=(const stack<T, Container>& x,<br />
2715 const stack<T, Container>& y);<br />
2717 23.2.4 Template class vector [lib.vector]<br />
2719 template <class T, class Allocator = allocator<T> ><br />
2720 T class vector {<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<iterator> reverse_iterator;<br />
2734 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
2735 // _lib.vector.cons_ construct/copy/destroy:<br />
2736 T explicit vector(const Allocator& = Allocator());<br />
2737 T explicit vector(size_type n, const T& value = T(),<br />
2738 const Allocator& = Allocator());<br />
2739 T template <class InputIterator><br />
2740 vector(InputIterator first, InputIterator last,<br />
2741 const Allocator& = Allocator());<br />
2742 T vector(const vector<T,Allocator>& x);<br />
2744 T vector<T,Allocator>& operator=(const vector<T,Allocator>& x);<br />
2745 T template <class InputIterator><br />
2746 void assign(InputIterator first, InputIterator last);<br />
2747 T void assign(size_type n, const T& u);<br />
2748 T allocator_type get_allocator() const;<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 />
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& x);<br />
2777 T void pop_back();<br />
2778 T iterator insert(iterator position, const T& x);<br />
2779 T void insert(iterator position, size_type n, const T& x);<br />
2780 T template <class InputIterator><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<T,Allocator>&);<br />
2786 T void clear();<br />
2789 T template <class T, class Allocator><br />
2790 bool operator==(const vector<T,Allocator>& x,<br />
2791 const vector<T,Allocator>& y);<br />
2792 T template <class T, class Allocator><br />
2793 bool operator< (const vector<T,Allocator>& x,<br />
2794 const vector<T,Allocator>& y);<br />
2795 T template <class T, class Allocator><br />
2796 bool operator!=(const vector<T,Allocator>& x,<br />
2797 const vector<T,Allocator>& y);<br />
2798 T template <class T, class Allocator><br />
2799 bool operator> (const vector<T,Allocator>& x,<br />
2800 const vector<T,Allocator>& y);<br />
2801 T template <class T, class Allocator><br />
2802 bool operator>=(const vector<T,Allocator>& x,<br />
2803 const vector<T,Allocator>& y);<br />
2804 T template <class T, class Allocator><br />
2805 bool operator<=(const vector<T,Allocator>& x,<br />
2806 const vector<T,Allocator>& y);<br />
2807 // specialized algorithms:<br />
2808 T template <class T, class Allocator><br />
2809 void swap(vector<T,Allocator>& x, vector<T,Allocator>& y);<br />
2812 23.2.5 Class vector<bool> [lib.vector.bool]<br />
2814 T template <class Allocator> class vector<bool, Allocator> {<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<iterator> reverse_iterator;<br />
2827 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
2828 // bit reference:<br />
2829 T class reference {<br />
2830 friend class vector;<br />
2831 T reference();<br />
2833 T ~reference();<br />
2834 T operator bool() const;<br />
2835 T reference& operator=(const bool x);<br />
2836 T reference& operator=(const reference& x);<br />
2837 T void flip(); // flips the bit<br />
2840 // construct/copy/destroy:<br />
2841 T explicit vector(const Allocator& = Allocator());<br />
2842 T explicit vector(size_type n, const bool& value = bool(),<br />
2843 const Allocator& = Allocator());<br />
2844 T template <class InputIterator><br />
2845 vector(InputIterator first, InputIterator last,<br />
2846 const Allocator& = Allocator());<br />
2847 T vector(const vector<bool,Allocator>& x);<br />
2849 T vector<bool,Allocator>& operator=(const vector<bool,Allocator>& x);<br />
2850 T template <class InputIterator><br />
2851 void assign(InputIterator first, InputIterator last);<br />
2852 T void assign(size_type n, const T& t);<br />
2853 T allocator_type get_allocator() const;<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 />
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 />
2880 T void push_back(const bool& x);<br />
2881 T void pop_back();<br />
2882 T iterator insert(iterator position, const bool& x);<br />
2883 T void insert (iterator position, size_type n, const bool& x);<br />
2884 T template <class InputIterator><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<bool,Allocator>&);<br />
2890 T static void swap(reference x, reference y);<br />
2891 T void flip(); // flips all bits<br />
2892 T void clear();<br />
2895 T template <class Allocator><br />
2896 bool operator==(const vector<bool,Allocator>& x,<br />
2897 const vector<bool,Allocator>& y);<br />
2898 T template <class Allocator><br />
2899 bool operator< (const vector<bool,Allocator>& x,<br />
2900 const vector<bool,Allocator>& y);<br />
2901 T template <class Allocator><br />
2902 bool operator!=(const vector<bool,Allocator>& x,<br />
2903 const vector<bool,Allocator>& y);<br />
2904 T template <class Allocator><br />
2905 bool operator> (const vector<bool,Allocator>& x,<br />
2906 const vector<bool,Allocator>& y);<br />
2907 T template <class Allocator><br />
2908 bool operator>=(const vector<bool,Allocator>& x,<br />
2909 const vector<bool,Allocator>& y);<br />
2910 T template <class Allocator><br />
2911 bool operator<=(const vector<bool,Allocator>& x,<br />
2912 const vector<bool,Allocator>& y);<br />
2913 // specialized algorithms:<br />
2914 T template <class Allocator><br />
2915 void swap(vector<bool,Allocator>& x, vector<bool,Allocator>& y);<br />
2917 23.3 Associative containers [lib.associative]<br />
2919 <map> and <set>:<br />
2921 Header <map> synopsis<br />
2923 template <class Key, class T, class Compare = less<Key>,<br />
2924 class Allocator = allocator<pair<const Key, T> > ><br />
2927 T template <class Key, class T, class Compare, class Allocator><br />
2928 bool operator==(const map<Key,T,Compare,Allocator>& x,<br />
2929 const map<Key,T,Compare,Allocator>& y);<br />
2930 T template <class Key, class T, class Compare, class Allocator><br />
2931 bool operator< (const map<Key,T,Compare,Allocator>& x,<br />
2932 const map<Key,T,Compare,Allocator>& y);<br />
2933 T template <class Key, class T, class Compare, class Allocator><br />
2934 bool operator!=(const map<Key,T,Compare,Allocator>& x,<br />
2935 const map<Key,T,Compare,Allocator>& y);<br />
2936 T template <class Key, class T, class Compare, class Allocator><br />
2937 bool operator> (const map<Key,T,Compare,Allocator>& x,<br />
2938 const map<Key,T,Compare,Allocator>& y);<br />
2939 T template <class Key, class T, class Compare, class Allocator><br />
2940 bool operator>=(const map<Key,T,Compare,Allocator>& x,<br />
2941 const map<Key,T,Compare,Allocator>& y);<br />
2942 T template <class Key, class T, class Compare, class Allocator><br />
2943 bool operator<=(const map<Key,T,Compare,Allocator>& x,<br />
2944 const map<Key,T,Compare,Allocator>& y);<br />
2945 T template <class Key, class T, class Compare, class Allocator><br />
2946 void swap(map<Key,T,Compare,Allocator>& x,<br />
2947 map<Key,T,Compare,Allocator>& y);<br />
2948 T template <class Key, class T, class Compare = less<Key>,<br />
2949 class Allocator = allocator<pair<const Key, T> > ><br />
2950 class multimap;<br />
2951 T template <class Key, class T, class Compare, class Allocator><br />
2952 bool operator==(const multimap<Key,T,Compare,Allocator>& x,<br />
2953 const multimap<Key,T,Compare,Allocator>& y);<br />
2954 T template <class Key, class T, class Compare, class Allocator><br />
2955 bool operator< (const multimap<Key,T,Compare,Allocator>& x,<br />
2956 const multimap<Key,T,Compare,Allocator>& y);<br />
2957 T template <class Key, class T, class Compare, class Allocator><br />
2958 bool operator!=(const multimap<Key,T,Compare,Allocator>& x,<br />
2959 const multimap<Key,T,Compare,Allocator>& y);<br />
2960 T template <class Key, class T, class Compare, class Allocator><br />
2961 bool operator> (const multimap<Key,T,Compare,Allocator>& x,<br />
2962 const multimap<Key,T,Compare,Allocator>& y);<br />
2963 T template <class Key, class T, class Compare, class Allocator><br />
2964 bool operator>=(const multimap<Key,T,Compare,Allocator>& x,<br />
2965 const multimap<Key,T,Compare,Allocator>& y);<br />
2966 T template <class Key, class T, class Compare, class Allocator><br />
2967 bool operator<=(const multimap<Key,T,Compare,Allocator>& x,<br />
2968 const multimap<Key,T,Compare,Allocator>& y);<br />
2969 T template <class Key, class T, class Compare, class Allocator><br />
2970 void swap(multimap<Key,T,Compare,Allocator>& x,<br />
2971 multimap<Key,T,Compare,Allocator>& y);<br />
2974 Header <set> synopsis<br />
2976 template <class Key, class Compare = less<Key>,<br />
2977 class Allocator = allocator<Key> ><br />
2980 T template <class Key, class Compare, class Allocator><br />
2981 bool operator==(const set<Key,Compare,Allocator>& x,<br />
2982 const set<Key,Compare,Allocator>& y);<br />
2983 T template <class Key, class Compare, class Allocator><br />
2984 bool operator< (const set<Key,Compare,Allocator>& x,<br />
2985 const set<Key,Compare,Allocator>& y);<br />
2986 T template <class Key, class Compare, class Allocator><br />
2987 bool operator!=(const set<Key,Compare,Allocator>& x,<br />
2988 const set<Key,Compare,Allocator>& y);<br />
2989 T template <class Key, class Compare, class Allocator><br />
2990 bool operator> (const set<Key,Compare,Allocator>& x,<br />
2991 const set<Key,Compare,Allocator>& y);<br />
2992 T template <class Key, class Compare, class Allocator><br />
2993 bool operator>=(const set<Key,Compare,Allocator>& x,<br />
2994 const set<Key,Compare,Allocator>& y);<br />
2995 T template <class Key, class Compare, class Allocator><br />
2996 bool operator<=(const set<Key,Compare,Allocator>& x,<br />
2997 const set<Key,Compare,Allocator>& y);<br />
2998 T template <class Key, class Compare, class Allocator><br />
2999 void swap(set<Key,Compare,Allocator>& x,<br />
3000 set<Key,Compare,Allocator>& y);<br />
3001 T template <class Key, class Compare = less<Key>,<br />
3002 class Allocator = allocator<Key> ><br />
3003 class multiset;<br />
3004 T template <class Key, class Compare, class Allocator><br />
3005 bool operator==(const multiset<Key,Compare,Allocator>& x,<br />
3006 const multiset<Key,Compare,Allocator>& y);<br />
3007 T template <class Key, class Compare, class Allocator><br />
3008 bool operator< (const multiset<Key,Compare,Allocator>& x,<br />
3009 const multiset<Key,Compare,Allocator>& y);<br />
3010 T template <class Key, class Compare, class Allocator><br />
3011 bool operator!=(const multiset<Key,Compare,Allocator>& x,<br />
3012 const multiset<Key,Compare,Allocator>& y);<br />
3013 T template <class Key, class Compare, class Allocator><br />
3014 bool operator> (const multiset<Key,Compare,Allocator>& x,<br />
3015 const multiset<Key,Compare,Allocator>& y);<br />
3016 T template <class Key, class Compare, class Allocator><br />
3017 bool operator>=(const multiset<Key,Compare,Allocator>& x,<br />
3018 const multiset<Key,Compare,Allocator>& y);<br />
3019 T template <class Key, class Compare, class Allocator><br />
3020 bool operator<=(const multiset<Key,Compare,Allocator>& x,<br />
3021 const multiset<Key,Compare,Allocator>& y);<br />
3022 T template <class Key, class Compare, class Allocator><br />
3023 void swap(multiset<Key,Compare,Allocator>& x,<br />
3024 multiset<Key,Compare,Allocator>& y);<br />
3027 23.3.1 Template class map [lib.map]<br />
3029 template <class Key, class T, class Compare = less<Key>,<br />
3030 class Allocator = allocator<pair<const Key, T> > ><br />
3034 T typedef Key key_type;<br />
3035 T typedef T mapped_type;<br />
3036 T typedef pair<const Key, T> 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<iterator> reverse_iterator;<br />
3048 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
3049 T class value_compare<br />
3050 : public binary_function<value_type,value_type,bool> {<br />
3051 friend class map;<br />
3053 T Compare comp;<br />
3054 T value_compare(Compare c) : comp(c) {}<br />
3056 T bool operator()(const value_type& x, const value_type& y) const {<br />
3057 return comp(x.first, y.first);<br />
3061 // _lib.map.cons_ construct/copy/destroy:<br />
3062 T explicit map(const Compare& comp = Compare(),<br />
3063 const Allocator& = Allocator());<br />
3064 T template <class InputIterator><br />
3065 map(InputIterator first, InputIterator last,<br />
3066 const Compare& comp = Compare(), const Allocator& = Allocator());<br />
3067 T map(const map<Key,T,Compare,Allocator>& x);<br />
3069 T map<Key,T,Compare,Allocator>&<br />
3070 operator=(const map<Key,T,Compare,Allocator>& x);<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 />
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& operator[](const key_type& x);<br />
3087 T pair<iterator, bool> insert(const value_type& x);<br />
3088 T iterator insert(iterator position, const value_type& x);<br />
3089 T template <class InputIterator><br />
3090 void insert(InputIterator first, InputIterator last);<br />
3091 T void erase(iterator position);<br />
3092 T size_type erase(const key_type& x);<br />
3093 T void erase(iterator first, iterator last);<br />
3094 T void swap(map<Key,T,Compare,Allocator>&);<br />
3095 T void clear();<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& x);<br />
3101 T const_iterator find(const key_type& x) const;<br />
3102 T size_type count(const key_type& x) const;<br />
3103 T iterator lower_bound(const key_type& x);<br />
3104 T const_iterator lower_bound(const key_type& x) const;<br />
3105 T iterator upper_bound(const key_type& x);<br />
3106 T const_iterator upper_bound(const key_type& x) const;<br />
3107 T pair<iterator,iterator><br />
3108 equal_range(const key_type& x);<br />
3109 T pair<const_iterator,const_iterator><br />
3110 equal_range(const key_type& x) const;<br />
3113 T template <class Key, class T, class Compare, class Allocator><br />
3114 bool operator==(const map<Key,T,Compare,Allocator>& x,<br />
3115 const map<Key,T,Compare,Allocator>& y);<br />
3116 T template <class Key, class T, class Compare, class Allocator><br />
3117 bool operator< (const map<Key,T,Compare,Allocator>& x,<br />
3118 const map<Key,T,Compare,Allocator>& y);<br />
3119 T template <class Key, class T, class Compare, class Allocator><br />
3120 bool operator!=(const map<Key,T,Compare,Allocator>& x,<br />
3121 const map<Key,T,Compare,Allocator>& y);<br />
3122 T template <class Key, class T, class Compare, class Allocator><br />
3123 bool operator> (const map<Key,T,Compare,Allocator>& x,<br />
3124 const map<Key,T,Compare,Allocator>& y);<br />
3125 T template <class Key, class T, class Compare, class Allocator><br />
3126 bool operator>=(const map<Key,T,Compare,Allocator>& x,<br />
3127 const map<Key,T,Compare,Allocator>& y);<br />
3128 T template <class Key, class T, class Compare, class Allocator><br />
3129 bool operator<=(const map<Key,T,Compare,Allocator>& x,<br />
3130 const map<Key,T,Compare,Allocator>& y);<br />
3131 // specialized algorithms:<br />
3132 T template <class Key, class T, class Compare, class Allocator><br />
3133 void swap(map<Key,T,Compare,Allocator>& x,<br />
3134 map<Key,T,Compare,Allocator>& y);<br />
3136 23.3.2 Template class multimap [lib.multimap]<br />
3138 template <class Key, class T, class Compare = less<Key>,<br />
3139 class Allocator = allocator<pair<const Key, T> > ><br />
3140 T class multimap {<br />
3143 T typedef Key key_type;<br />
3144 T typedef T mapped_type;<br />
3145 T typedef pair<const Key,T> 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<iterator> reverse_iterator;<br />
3157 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
3158 T class value_compare<br />
3159 : public binary_function<value_type,value_type,bool> {<br />
3160 friend class multimap;<br />
3162 T Compare comp;<br />
3163 T value_compare(Compare c) : comp(c) {}<br />
3165 T bool operator()(const value_type& x, const value_type& y) const {<br />
3166 return comp(x.first, y.first);<br />
3169 // construct/copy/destroy:<br />
3170 T explicit multimap(const Compare& comp = Compare(),<br />
3171 const Allocator& = Allocator());<br />
3172 T template <class InputIterator><br />
3173 multimap(InputIterator first, InputIterator last,<br />
3174 const Compare& comp = Compare(),<br />
3175 const Allocator& = Allocator());<br />
3176 T multimap(const multimap<Key,T,Compare,Allocator>& x);<br />
3177 T ~multimap();<br />
3178 T multimap<Key,T,Compare,Allocator>&<br />
3179 operator=(const multimap<Key,T,Compare,Allocator>& x);<br />
3180 T allocator_type get_allocator() const;<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 />
3192 T bool empty() const;<br />
3193 T size_type size() const;<br />
3194 T size_type max_size() const;<br />
3196 T iterator insert(const value_type& x);<br />
3197 T iterator insert(iterator position, const value_type& x);<br />
3198 T template <class InputIterator><br />
3199 void insert(InputIterator first, InputIterator last);<br />
3200 T void erase(iterator position);<br />
3201 T size_type erase(const key_type& x);<br />
3202 T void erase(iterator first, iterator last);<br />
3203 T void swap(multimap<Key,T,Compare,Allocator>&);<br />
3204 T void clear();<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& x);<br />
3210 T const_iterator find(const key_type& x) const;<br />
3211 T size_type count(const key_type& x) const;<br />
3212 T iterator lower_bound(const key_type& x);<br />
3213 T const_iterator lower_bound(const key_type& x) const;<br />
3214 T iterator upper_bound(const key_type& x);<br />
3215 T const_iterator upper_bound(const key_type& x) const;<br />
3216 T pair<iterator,iterator> equal_range(const key_type& x);<br />
3217 T pair<const_iterator,const_iterator> equal_range(const key_type& x) const;<br />
3220 T template <class Key, class T, class Compare, class Allocator><br />
3221 bool operator==(const multimap<Key,T,Compare,Allocator>& x,<br />
3222 const multimap<Key,T,Compare,Allocator>& y);<br />
3223 T template <class Key, class T, class Compare, class Allocator><br />
3224 bool operator< (const multimap<Key,T,Compare,Allocator>& x,<br />
3225 const multimap<Key,T,Compare,Allocator>& y);<br />
3226 T template <class Key, class T, class Compare, class Allocator><br />
3227 bool operator!=(const multimap<Key,T,Compare,Allocator>& x,<br />
3228 const multimap<Key,T,Compare,Allocator>& y);<br />
3229 T template <class Key, class T, class Compare, class Allocator><br />
3230 bool operator> (const multimap<Key,T,Compare,Allocator>& x,<br />
3231 const multimap<Key,T,Compare,Allocator>& y);<br />
3232 T template <class Key, class T, class Compare, class Allocator><br />
3233 bool operator>=(const multimap<Key,T,Compare,Allocator>& x,<br />
3234 const multimap<Key,T,Compare,Allocator>& y);<br />
3235 T template <class Key, class T, class Compare, class Allocator><br />
3236 bool operator<=(const multimap<Key,T,Compare,Allocator>& x,<br />
3237 const multimap<Key,T,Compare,Allocator>& y);<br />
3238 // specialized algorithms:<br />
3239 T template <class Key, class T, class Compare, class Allocator><br />
3240 void swap(multimap<Key,T,Compare,Allocator>& x,<br />
3241 multimap<Key,T,Compare,Allocator>& y);<br />
3244 23.3.3 Template class set [lib.set]<br />
3246 template <class Key, class Compare = less<Key>,<br />
3247 class Allocator = allocator<Key> ><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<iterator> reverse_iterator;<br />
3265 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
3266 // _lib.set.cons_ construct/copy/destroy:<br />
3267 T explicit set(const Compare& comp = Compare(),<br />
3268 const Allocator& = Allocator());<br />
3269 T template <class InputIterator><br />
3270 set(InputIterator first, InputIterator last,<br />
3271 const Compare& comp = Compare(), const Allocator& = Allocator());<br />
3272 T set(const set<Key,Compare,Allocator>& x);<br />
3274 T set<Key,Compare,Allocator>&<br />
3275 operator=(const set<Key,Compare,Allocator>& x);<br />
3276 T allocator_type get_allocator() const;<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 />
3287 T bool empty() const;<br />
3288 T size_type size() const;<br />
3289 T size_type max_size() const;<br />
3291 T pair<iterator,bool> insert(const value_type& x);<br />
3292 T iterator insert(iterator position, const value_type& x);<br />
3293 T template <class InputIterator><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& x);<br />
3297 T void erase(iterator first, iterator last);<br />
3298 T void swap(set<Key,Compare,Allocator>&);<br />
3299 T void clear();<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& x) const;<br />
3306 T size_type count(const key_type& x) const;<br />
3307 T iterator lower_bound(const key_type& x) const;<br />
3308 T iterator upper_bound(const key_type& x) const;<br />
3309 T pair<iterator,iterator> equal_range(const key_type& x) const;<br />
3311 T template <class Key, class Compare, class Allocator><br />
3312 bool operator==(const set<Key,Compare,Allocator>& x,<br />
3313 const set<Key,Compare,Allocator>& y);<br />
3314 T template <class Key, class Compare, class Allocator><br />
3315 bool operator< (const set<Key,Compare,Allocator>& x,<br />
3316 const set<Key,Compare,Allocator>& y);<br />
3317 T template <class Key, class Compare, class Allocator><br />
3318 bool operator!=(const set<Key,Compare,Allocator>& x,<br />
3319 const set<Key,Compare,Allocator>& y);<br />
3320 T template <class Key, class Compare, class Allocator><br />
3321 bool operator> (const set<Key,Compare,Allocator>& x,<br />
3322 const set<Key,Compare,Allocator>& y);<br />
3323 T template <class Key, class Compare, class Allocator><br />
3324 bool operator>=(const set<Key,Compare,Allocator>& x,<br />
3325 const set<Key,Compare,Allocator>& y);<br />
3326 T template <class Key, class Compare, class Allocator><br />
3327 bool operator<=(const set<Key,Compare,Allocator>& x,<br />
3328 const set<Key,Compare,Allocator>& y);<br />
3329 // specialized algorithms:<br />
3330 T template <class Key, class Compare, class Allocator><br />
3331 void swap(set<Key,Compare,Allocator>& x,<br />
3332 set<Key,Compare,Allocator>& y);<br />
3334 23.3.4 Template class multiset [lib.multiset]<br />
3336 template <class Key, class Compare = less<Key>,<br />
3337 class Allocator = allocator<Key> ><br />
3338 T class multiset {<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<iterator> reverse_iterator;<br />
3355 T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
3357 // construct/copy/destroy:<br />
3358 T explicit multiset(const Compare& comp = Compare(),<br />
3359 const Allocator& = Allocator());<br />
3360 T template <class InputIterator><br />
3361 multiset(InputIterator first, InputIterator last,<br />
3362 const Compare& comp = Compare(),<br />
3363 const Allocator& = Allocator());<br />
3364 T multiset(const multiset<Key,Compare,Allocator>& x);<br />
3365 T ~multiset();<br />
3366 T multiset<Key,Compare,Allocator>&<br />
3367 operator=(const multiset<Key,Compare,Allocator>& x);<br />
3368 T allocator_type get_allocator() const;<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 />
3379 T bool empty() const;<br />
3380 T size_type size() const;<br />
3381 T size_type max_size() const;<br />
3383 T iterator insert(const value_type& x);<br />
3384 T iterator insert(iterator position, const value_type& x);<br />
3385 T template <class InputIterator><br />
3386 void insert(InputIterator first, InputIterator last);<br />
3387 T void erase(iterator position);<br />
3388 T size_type erase(const key_type& x);<br />
3389 T void erase(iterator first, iterator last);<br />
3390 T void swap(multiset<Key,Compare,Allocator>&);<br />
3391 T void clear();<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& x) const;<br />
3397 T size_type count(const key_type& x) const;<br />
3398 T iterator lower_bound(const key_type& x) const;<br />
3399 T iterator upper_bound(const key_type& x) const;<br />
3400 T pair<iterator,iterator> equal_range(const key_type& x) const;<br />
3403 T template <class Key, class Compare, class Allocator><br />
3404 bool operator==(const multiset<Key,Compare,Allocator>& x,<br />
3405 const multiset<Key,Compare,Allocator>& y);<br />
3406 T template <class Key, class Compare, class Allocator><br />
3407 bool operator< (const multiset<Key,Compare,Allocator>& x,<br />
3408 const multiset<Key,Compare,Allocator>& y);<br />
3409 T template <class Key, class Compare, class Allocator><br />
3410 bool operator!=(const multiset<Key,Compare,Allocator>& x,<br />
3411 const multiset<Key,Compare,Allocator>& y);<br />
3412 T template <class Key, class Compare, class Allocator><br />
3413 bool operator> (const multiset<Key,Compare,Allocator>& x,<br />
3414 const multiset<Key,Compare,Allocator>& y);<br />
3415 T template <class Key, class Compare, class Allocator><br />
3416 bool operator>=(const multiset<Key,Compare,Allocator>& x,<br />
3417 const multiset<Key,Compare,Allocator>& y);<br />
3418 T template <class Key, class Compare, class Allocator><br />
3419 bool operator<=(const multiset<Key,Compare,Allocator>& x,<br />
3420 const multiset<Key,Compare,Allocator>& y);<br />
3421 // specialized algorithms:<br />
3422 T template <class Key, class Compare, class Allocator><br />
3423 void swap(multiset<Key,Compare,Allocator>& x,<br />
3424 multiset<Key,Compare,Allocator>& y);<br />
3426 23.3.5 Template class bitset [lib.template.bitset]<br />
3428 Header <bitset> synopsis<br />
3430 T template <size_t N> class bitset;<br />
3431 // _lib.bitset.operators_ bitset operations:<br />
3432 T template <size_t N><br />
3433 bitset<N> operator&(const bitset<N>&, const bitset<N>&);<br />
3434 T template <size_t N><br />
3435 bitset<N> operator|(const bitset<N>&, const bitset<N>&);<br />
3436 T template <size_t N><br />
3437 bitset<N> operator^(const bitset<N>&, const bitset<N>&);<br />
3438 T template <class charT, class traits, size_t N><br />
3439 basic_istream<charT, traits>&<br />
3440 operator>>(basic_istream<charT, traits>& is, bitset<N>& x);<br />
3441 T template <class charT, class traits, size_t N><br />
3442 basic_ostream<charT, traits>&<br />
3443 operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x);<br />
3445 T template<size_t N> class bitset {<br />
3447 // bit reference:<br />
3448 T class reference {<br />
3449 friend class bitset;<br />
3450 T reference();<br />
3452 T ~reference();<br />
3453 T reference& operator=(bool x); // for b[i] = x;<br />
3454 T reference& operator=(const reference&); // 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& flip(); // for b[i].flip();<br />
3460 // _lib.bitset.cons_ constructors:<br />
3462 T bitset(unsigned long val);<br />
3463 T template<class charT, class traits, class Allocator><br />
3464 explicit bitset(<br />
3465 const basic_string<charT,traits,Allocator>& str,<br />
3466 typename basic_string<charT,traits,Allocator>::size_type pos = 0,<br />
3467 typename basic_string<charT,traits,Allocator>::size_type n =<br />
3468 basic_string<charT,traits,Allocator>::npos);<br />
3469 // _lib.bitset.members_ bitset operations:<br />
3470 T bitset<N>& operator&=(const bitset<N>& rhs);<br />
3471 T bitset<N>& operator|=(const bitset<N>& rhs);<br />
3472 T bitset<N>& operator^=(const bitset<N>& rhs);<br />
3473 T bitset<N>& operator<<=(size_t pos);<br />
3474 T bitset<N>& operator>>=(size_t pos);<br />
3475 T bitset<N>& set();<br />
3476 T bitset<N>& set(size_t pos, int val = true);<br />
3477 T bitset<N>& reset();<br />
3478 T bitset<N>& reset(size_t pos);<br />
3479 T bitset<N> operator~() const;<br />
3480 T bitset<N>& flip();<br />
3481 T bitset<N>& 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 <class charT, class traits, class Allocator><br />
3486 basic_string<charT, traits, Allocator> to_string() const;<br />
3487 T size_t count() const;<br />
3488 T size_t size() const;<br />
3489 T bool operator==(const bitset<N>& rhs) const;<br />
3490 T bool operator!=(const bitset<N>& 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<N> operator<<(size_t pos) const;<br />
3495 T bitset<N> operator>>(size_t pos) const;<br />
3501 24.2 Header <iterator> synopsis [lib.iterator.synopsis]<br />
3503 // _lib.iterator.primitives_, primitives:<br />
3504 T template<class Iterator> struct iterator_traits;<br />
3505 T template<class T> struct iterator_traits<T*>;<br />
3507 X template<class Category, class T, class Distance = ptrdiff_t,<br />
3508 class Pointer = T*, class Reference = T&> 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 <class InputIterator, class Distance><br />
3516 void advance(InputIterator& i, Distance n);<br />
3517 T template <class InputIterator><br />
3518 typename iterator_traits<InputIterator>::difference_type<br />
3519 distance(InputIterator first, InputIterator last);<br />
3520 // _lib.predef.iterators_, predefined iterators:<br />
3521 X template <class Iterator> class reverse_iterator;<br />
3522 T template <class Iterator><br />
3523 bool operator==(<br />
3524 const reverse_iterator<Iterator>& x,<br />
3525 const reverse_iterator<Iterator>& y);<br />
3526 T template <class Iterator><br />
3527 bool operator<(<br />
3528 const reverse_iterator<Iterator>& x,<br />
3529 const reverse_iterator<Iterator>& y);<br />
3530 T template <class Iterator><br />
3531 bool operator!=(<br />
3532 const reverse_iterator<Iterator>& x,<br />
3533 const reverse_iterator<Iterator>& y);<br />
3534 T template <class Iterator><br />
3535 bool operator>(<br />
3536 const reverse_iterator<Iterator>& x,<br />
3537 const reverse_iterator<Iterator>& y);<br />
3538 T template <class Iterator><br />
3539 bool operator>=(<br />
3540 const reverse_iterator<Iterator>& x,<br />
3541 const reverse_iterator<Iterator>& y);<br />
3542 T template <class Iterator><br />
3543 bool operator<=(<br />
3544 const reverse_iterator<Iterator>& x,<br />
3545 const reverse_iterator<Iterator>& y);<br />
3546 T template <class Iterator><br />
3547 typename reverse_iterator<Iterator>::difference_type operator-(<br />
3548 const reverse_iterator<Iterator>& x,<br />
3549 const reverse_iterator<Iterator>& y);<br />
3550 T template <class Iterator><br />
3551 reverse_iterator<Iterator><br />
3553 typename reverse_iterator<Iterator>::difference_type n,<br />
3554 const reverse_iterator<Iterator>& x);<br />
3556 X template <class Container> class back_insert_iterator;<br />
3557 T template <class Container><br />
3558 back_insert_iterator<Container> back_inserter(Container& x);<br />
3559 X template <class Container> class front_insert_iterator;<br />
3560 T template <class Container><br />
3561 front_insert_iterator<Container> front_inserter(Container& x);<br />
3562 X template <class Container> class insert_iterator;<br />
3563 T template <class Container, class Iterator><br />
3564 insert_iterator<Container> inserter(Container& x, Iterator i);<br />
3565 // _lib.stream.iterators_, stream iterators:<br />
3566 X template <class T, class charT = char, class traits = char_traits<charT>,<br />
3567 class Distance = ptrdiff_t><br />
3568 class istream_iterator;<br />
3569 template <class T, class charT, class traits, class Distance><br />
3570 X bool operator==(const istream_iterator<T,charT,traits,Distance>& x,<br />
3571 const istream_iterator<T,charT,traits,Distance>& y);<br />
3572 template <class T, class charT, class traits, class Distance><br />
3573 X bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,<br />
3574 const istream_iterator<T,charT,traits,Distance>& y);<br />
3575 X template <class T, class charT = char, class traits = char_traits<charT> ><br />
3576 class ostream_iterator;<br />
3577 X template<class charT, class traits = char_traits<charT> ><br />
3578 class istreambuf_iterator;<br />
3579 X template <class charT, class traits><br />
3580 bool operator==(const istreambuf_iterator<charT,traits>& a,<br />
3581 const istreambuf_iterator<charT,traits>& b);<br />
3582 X template <class charT, class traits><br />
3583 bool operator!=(const istreambuf_iterator<charT,traits>& a,<br />
3584 const istreambuf_iterator<charT,traits>& b);<br />
3585 T template <class charT, class traits = char_traits<charT> ><br />
3586 class ostreambuf_iterator;<br />
3588 24.3 Iterator primitives [lib.iterator.primitives]<br />
3590 T template<class Iterator> 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 />
3598 T template<class T> struct iterator_traits<T*> {<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& reference;<br />
3603 T typedef random_access_iterator_tag iterator_category;<br />
3606 T template<class T> struct iterator_traits<const T*> {<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& reference;<br />
3611 T typedef random_access_iterator_tag iterator_category;<br />
3614 24.3.2 Basic iterator [lib.iterator.basic]<br />
3616 template<class Category, class T, class Distance = ptrdiff_t,<br />
3617 class Pointer = T*, class Reference = T&><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 />
3626 24.3.3 Standard iterator tags [lib.std.iterator.tags]<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 />
3635 24.4.1 Reverse iterators [lib.reverse.iterators]<br />
3637 template <class Iterator><br />
3638 X class reverse_iterator : public<br />
3639 iterator<typename iterator_traits<Iterator>::iterator_category,<br />
3640 typename iterator_traits<Iterator>::value_type,<br />
3641 typename iterator_traits<Iterator>::difference_type,<br />
3642 typename iterator_traits<Iterator>::pointer,<br />
3643 typename iterator_traits<Iterator>::reference> {<br />
3645 T Iterator current;<br />
3647 T typedef Iterator<br />
3648 iterator_type;<br />
3649 T typedef typename iterator_traits<Iterator>::difference_type<br />
3650 difference_type;<br />
3651 T typedef typename iterator_traits<Iterator>::reference<br />
3653 T typedef typename iterator_traits<Iterator>::pointer<br />
3656 T reverse_iterator();<br />
3657 T explicit reverse_iterator(Iterator x);<br />
3658 T template <class U> reverse_iterator(const reverse_iterator<U>& u);<br />
3659 T Iterator base() const; // explicit<br />
3660 T reference operator*() const;<br />
3661 T pointer operator->() const;<br />
3662 T reverse_iterator& operator++();<br />
3663 T reverse_iterator operator++(int);<br />
3664 T reverse_iterator& operator--();<br />
3665 T reverse_iterator operator--(int);<br />
3667 T reverse_iterator operator+ (difference_type n) const;<br />
3668 T reverse_iterator& operator+=(difference_type n);<br />
3669 T reverse_iterator operator- (difference_type n) const;<br />
3670 T reverse_iterator& operator-=(difference_type n);<br />
3671 T reference operator[](difference_type n) const;<br />
3673 T template <class Iterator><br />
3674 bool operator==(<br />
3675 const reverse_iterator<Iterator>& x,<br />
3676 const reverse_iterator<Iterator>& y);<br />
3677 T template <class Iterator><br />
3678 bool operator<(<br />
3679 const reverse_iterator<Iterator>& x,<br />
3680 const reverse_iterator<Iterator>& y);<br />
3681 T template <class Iterator><br />
3682 bool operator!=(<br />
3683 const reverse_iterator<Iterator>& x,<br />
3684 const reverse_iterator<Iterator>& y);<br />
3685 T template <class Iterator><br />
3686 bool operator>(<br />
3687 const reverse_iterator<Iterator>& x,<br />
3688 const reverse_iterator<Iterator>& y);<br />
3689 T template <class Iterator><br />
3690 bool operator>=(<br />
3691 const reverse_iterator<Iterator>& x,<br />
3692 const reverse_iterator<Iterator>& y);<br />
3693 T template <class Iterator><br />
3694 bool operator<=(<br />
3695 const reverse_iterator<Iterator>& x,<br />
3696 const reverse_iterator<Iterator>& y);<br />
3697 T template <class Iterator><br />
3698 typename reverse_iterator<Iterator>::difference_type operator-(<br />
3699 const reverse_iterator<Iterator>& x,<br />
3700 const reverse_iterator<Iterator>& y);<br />
3701 T template <class Iterator><br />
3702 reverse_iterator<Iterator> operator+(<br />
3703 typename reverse_iterator<Iterator>::difference_type n,<br />
3704 const reverse_iterator<Iterator>& x);<br />
3707 24.4.2.1 Template class [lib.back.insert.iterator]<br />
3708 back_insert_iterator<br />
3710 template <class Container><br />
3711 X class back_insert_iterator :<br />
3712 public iterator<output_iterator_tag,void,void,void,void> {<br />
3714 T Container* container;<br />
3716 T typedef Container container_type;<br />
3717 T explicit back_insert_iterator(Container& x);<br />
3718 T back_insert_iterator<Container>&<br />
3719 operator=(typename Container::const_reference value);<br />
3721 T back_insert_iterator<Container>& operator*();<br />
3722 T back_insert_iterator<Container>& operator++();<br />
3723 T back_insert_iterator<Container> operator++(int);<br />
3725 T template <class Container><br />
3726 back_insert_iterator<Container> back_inserter(Container& x);<br />
3730 24.4.2.3 Template class [lib.front.insert.iterator]<br />
3731 front_insert_iterator<br />
3733 template <class Container><br />
3734 X class front_insert_iterator :<br />
3735 public iterator<output_iterator_tag,void,void,void,void> {<br />
3737 T Container* container;<br />
3739 T typedef Container container_type;<br />
3740 T explicit front_insert_iterator(Container& x);<br />
3741 T front_insert_iterator<Container>&<br />
3742 operator=(typename Container::const_reference value);<br />
3743 T front_insert_iterator<Container>& operator*();<br />
3744 T front_insert_iterator<Container>& operator++();<br />
3745 T front_insert_iterator<Container> operator++(int);<br />
3747 T template <class Container><br />
3748 front_insert_iterator<Container> front_inserter(Container& x);<br />
3751 24.4.2.5 Template class insert_iterator [lib.insert.iterator]<br />
3753 template <class Container><br />
3754 X class insert_iterator :<br />
3755 public iterator<output_iterator_tag,void,void,void,void> {<br />
3757 T Container* container;<br />
3758 T typename Container::iterator iter;<br />
3760 T typedef Container container_type;<br />
3761 T insert_iterator(Container& x, typename Container::iterator i);<br />
3762 T insert_iterator<Container>&<br />
3763 operator=(typename Container::const_reference value);<br />
3764 T insert_iterator<Container>& operator*();<br />
3765 T insert_iterator<Container>& operator++();<br />
3766 T insert_iterator<Container>& operator++(int);<br />
3768 T template <class Container, class Iterator><br />
3769 insert_iterator<Container> inserter(Container& x, Iterator i);<br />
3771 24.5.1 Template class istream_iterator [lib.istream.iterator]<br />
3773 template <class T, class charT = char, class traits = char_traits<charT>,<br />
3774 class Distance = ptrdiff_t><br />
3775 X class istream_iterator:<br />
3776 public iterator<input_iterator_tag, T, Distance, const T*, const T&> {<br />
3778 T typedef charT char_type<br />
3779 T typedef traits traits_type;<br />
3780 T typedef basic_istream<charT,traits> istream_type;<br />
3781 T istream_iterator();<br />
3782 T istream_iterator(istream_type& s);<br />
3783 T istream_iterator(const istream_iterator<T,charT,traits,Distance>& x);<br />
3784 T ~istream_iterator();<br />
3786 T const T& operator*() const;<br />
3787 T const T* operator->() const;<br />
3788 T istream_iterator<T,charT,traits,Distance>& operator++();<br />
3789 T istream_iterator<T,charT,traits,Distance> operator++(int);<br />
3792 T template <class T, class charT, class traits, class Distance><br />
3793 bool operator==(const istream_iterator<T,charT,traits,Distance>& x,<br />
3794 const istream_iterator<T,charT,traits,Distance>& y);<br />
3795 T template <class T, class charT, class traits, class Distance><br />
3796 bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,<br />
3797 const istream_iterator<T,charT,traits,Distance>& y);<br />
3800 24.5.2 Template class ostream_iterator [lib.ostream.iterator]<br />
3802 template <class T, class charT = char, class traits = char_traits<charT> ><br />
3803 X class ostream_iterator:<br />
3804 public iterator<output_iterator_tag, void, void, void, void> {<br />
3806 T typedef charT char_type;<br />
3807 T typedef traits traits_type;<br />
3808 T typedef basic_ostream<charT,traits> ostream_type;<br />
3809 T ostream_iterator(ostream_type& s);<br />
3810 T ostream_iterator(ostream_type& s, const charT* delimiter);<br />
3811 T ostream_iterator(const ostream_iterator<T,charT,traits>& x);<br />
3812 T ~ostream_iterator();<br />
3813 T ostream_iterator<T,charT,traits>& operator=(const T& value);<br />
3815 T ostream_iterator<T,charT,traits>& operator*();<br />
3816 T ostream_iterator<T,charT,traits>& operator++();<br />
3817 T ostream_iterator<T,charT,traits>& operator++(int);<br />
3821 24.5.3 Template class [lib.istreambuf.iterator]<br />
3822 istreambuf_iterator<br />
3824 template<class charT, class traits = char_traits<charT> ><br />
3825 X class istreambuf_iterator<br />
3826 : public iterator<input_iterator_tag, charT,<br />
3827 typename traits::off_type, charT*, charT&> {<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<charT,traits> streambuf_type;<br />
3833 T typedef basic_istream<charT,traits> istream_type;<br />
3834 T class proxy; // exposition only<br />
3835 T istreambuf_iterator() throw();<br />
3836 T istreambuf_iterator(istream_type& s) throw();<br />
3837 T istreambuf_iterator(streambuf_type* s) throw();<br />
3838 T istreambuf_iterator(const proxy& p) throw();<br />
3839 T charT operator*() const;<br />
3840 T istreambuf_iterator<charT,traits>& operator++();<br />
3841 T proxy operator++(int);<br />
3842 X bool equal(istreambuf_iterator& b);<br />
3845 T template <class charT, class traits><br />
3846 bool operator==(const istreambuf_iterator<charT,traits>& a,<br />
3847 const istreambuf_iterator<charT,traits>& b);<br />
3849 T template <class charT, class traits><br />
3850 bool operator!=(const istreambuf_iterator<charT,traits>& a,<br />
3851 const istreambuf_iterator<charT,traits>& b);<br />
3853 24.5.3.1 Template class [lib.istreambuf.iterator::proxy]<br />
3854 istreambuf_iterator::proxy<br />
3856 template <class charT, class traits = char_traits<charT> ><br />
3857 T class istreambuf_iterator<charT, traits>::proxy<br />
3859 T charT keep_;<br />
3860 T basic_streambuf<charT,traits>* sbuf_;<br />
3861 T proxy(charT c,<br />
3862 basic_streambuf<charT,traits>* sbuf);<br />
3863 : keep_(c), sbuf_(sbuf) {}<br />
3865 T charT operator*() { return keep_; }<br />
3870 24.5.4 Template class [lib.ostreambuf.iterator]<br />
3871 ostreambuf_iterator<br />
3873 template <class charT, class traits = char_traits<charT> ><br />
3874 T class ostreambuf_iterator:<br />
3875 public iterator<output_iterator_tag, void, void, void, void> {<br />
3877 T typedef charT char_type;<br />
3878 T typedef traits traits_type;<br />
3879 T typedef basic_streambuf<charT,traits> streambuf_type;<br />
3880 T typedef basic_ostream<charT,traits> ostream_type;<br />
3882 T ostreambuf_iterator(ostream_type& s) throw();<br />
3883 T ostreambuf_iterator(streambuf_type* s) throw();<br />
3884 T ostreambuf_iterator& operator=(charT c);<br />
3885 T ostreambuf_iterator& operator*();<br />
3886 T ostreambuf_iterator& operator++();<br />
3887 T ostreambuf_iterator& operator++(int);<br />
3888 T bool failed() const throw();<br />
3892 Header <algorithm> synopsis<br />
3895 // _lib.alg.nonmodifying_, non-modifying sequence operations:<br />
3896 T template<class InputIterator, class Function><br />
3897 Function for_each(InputIterator first, InputIterator last, Function f);<br />
3898 T template<class InputIterator, class T><br />
3899 InputIterator find(InputIterator first, InputIterator last,<br />
3900 const T& value);<br />
3901 T template<class InputIterator, class Predicate><br />
3902 InputIterator find_if(InputIterator first, InputIterator last,<br />
3903 Predicate pred);<br />
3904 T template<class ForwardIterator1, class ForwardIterator2><br />
3905 ForwardIterator1<br />
3906 find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3907 ForwardIterator2 first2, ForwardIterator2 last2);<br />
3908 T template<class ForwardIterator1, class ForwardIterator2,<br />
3909 class BinaryPredicate><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<class ForwardIterator1, class ForwardIterator2><br />
3915 ForwardIterator1<br />
3916 find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3917 ForwardIterator2 first2, ForwardIterator2 last2);<br />
3918 T template<class ForwardIterator1, class ForwardIterator2,<br />
3919 class BinaryPredicate><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<class ForwardIterator><br />
3925 ForwardIterator adjacent_find(ForwardIterator first,<br />
3926 ForwardIterator last);<br />
3927 T template<class ForwardIterator, class BinaryPredicate><br />
3928 ForwardIterator adjacent_find(ForwardIterator first,<br />
3929 ForwardIterator last, BinaryPredicate pred);<br />
3930 T template<class InputIterator, class T><br />
3931 typename iterator_traits<InputIterator>::difference_type<br />
3932 count(InputIterator first, InputIterator last, const T& value);<br />
3933 T template<class InputIterator, class Predicate><br />
3934 typename iterator_traits<InputIterator>::difference_type<br />
3935 count_if(InputIterator first, InputIterator last, Predicate pred);<br />
3936 T template<class InputIterator1, class InputIterator2><br />
3937 pair<InputIterator1, InputIterator2><br />
3938 mismatch(InputIterator1 first1, InputIterator1 last1,<br />
3939 InputIterator2 first2);<br />
3940 T template<class InputIterator1, class InputIterator2, class BinaryPredicate><br />
3941 pair<InputIterator1, InputIterator2><br />
3942 mismatch(InputIterator1 first1, InputIterator1 last1,<br />
3943 InputIterator2 first2, BinaryPredicate pred);<br />
3945 T template<class InputIterator1, class InputIterator2><br />
3946 bool equal(InputIterator1 first1, InputIterator1 last1,<br />
3947 InputIterator2 first2);<br />
3948 T template<class InputIterator1, class InputIterator2, class BinaryPredicate><br />
3949 bool equal(InputIterator1 first1, InputIterator1 last1,<br />
3950 InputIterator2 first2, BinaryPredicate pred);<br />
3951 T template<class ForwardIterator1, class ForwardIterator2><br />
3952 ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3953 ForwardIterator2 first2, ForwardIterator2 last2);<br />
3954 T template<class ForwardIterator1, class ForwardIterator2,<br />
3955 class BinaryPredicate><br />
3956 ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
3957 ForwardIterator2 first2, ForwardIterator2 last2,<br />
3958 BinaryPredicate pred);<br />
3959 T template<class ForwardIterator, class Size, class T><br />
3960 ForwardIterator search_n(ForwardIterator first, ForwardIterator last,<br />
3961 Size count, const T& value);<br />
3962 T template<class ForwardIterator, class Size, class T, class BinaryPredicate><br />
3963 ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last,<br />
3964 Size count, const T& value,<br />
3965 BinaryPredicate pred);<br />
3966 // _lib.alg.modifying.operations_, modifying sequence operations:<br />
3967 // _lib.alg.copy_, copy:<br />
3968 T template<class InputIterator, class OutputIterator><br />
3969 OutputIterator copy(InputIterator first, InputIterator last,<br />
3970 OutputIterator result);<br />
3971 T template<class BidirectionalIterator1, class BidirectionalIterator2><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<class T> void swap(T& a, T& b);<br />
3977 T template<class ForwardIterator1, class ForwardIterator2><br />
3978 ForwardIterator2 swap_ranges(ForwardIterator1 first1,<br />
3979 ForwardIterator1 last1, ForwardIterator2 first2);<br />
3980 T template<class ForwardIterator1, class ForwardIterator2><br />
3981 void iter_swap(ForwardIterator1 a, ForwardIterator2 b);<br />
3982 T template<class InputIterator, class OutputIterator, class UnaryOperation><br />
3983 OutputIterator transform(InputIterator first, InputIterator last,<br />
3984 OutputIterator result, UnaryOperation op);<br />
3985 T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
3986 class BinaryOperation><br />
3987 OutputIterator transform(InputIterator1 first1, InputIterator1 last1,<br />
3988 InputIterator2 first2, OutputIterator result,<br />
3989 BinaryOperation binary_op);<br />
3991 T template<class ForwardIterator, class T><br />
3992 void replace(ForwardIterator first, ForwardIterator last,<br />
3993 const T& old_value, const T& new_value);<br />
3994 T template<class ForwardIterator, class Predicate, class T><br />
3995 void replace_if(ForwardIterator first, ForwardIterator last,<br />
3996 Predicate pred, const T& new_value);<br />
3997 T template<class InputIterator, class OutputIterator, class T><br />
3998 OutputIterator replace_copy(InputIterator first, InputIterator last,<br />
3999 OutputIterator result,<br />
4000 const T& old_value, const T& new_value);<br />
4001 T template<class Iterator, class OutputIterator, class Predicate, class T><br />
4002 OutputIterator replace_copy_if(Iterator first, Iterator last,<br />
4003 OutputIterator result,<br />
4004 Predicate pred, const T& new_value);<br />
4005 T template<class ForwardIterator, class T><br />
4006 void fill(ForwardIterator first, ForwardIterator last, const T& value);<br />
4007 T template<class OutputIterator, class Size, class T><br />
4008 void fill_n(OutputIterator first, Size n, const T& value);<br />
4009 T template<class ForwardIterator, class Generator><br />
4010 void generate(ForwardIterator first, ForwardIterator last, Generator gen);<br />
4011 T template<class OutputIterator, class Size, class Generator><br />
4012 void generate_n(OutputIterator first, Size n, Generator gen);<br />
4013 T template<class ForwardIterator, class T><br />
4014 ForwardIterator remove(ForwardIterator first, ForwardIterator last,<br />
4015 const T& value);<br />
4016 T template<class ForwardIterator, class Predicate><br />
4017 ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,<br />
4018 Predicate pred);<br />
4019 T template<class InputIterator, class OutputIterator, class T><br />
4020 OutputIterator remove_copy(InputIterator first, InputIterator last,<br />
4021 OutputIterator result, const T& value);<br />
4022 T template<class InputIterator, class OutputIterator, class Predicate><br />
4023 OutputIterator remove_copy_if(InputIterator first, InputIterator last,<br />
4024 OutputIterator result, Predicate pred);<br />
4025 T template<class ForwardIterator><br />
4026 ForwardIterator unique(ForwardIterator first, ForwardIterator last);<br />
4027 T template<class ForwardIterator, class BinaryPredicate><br />
4028 ForwardIterator unique(ForwardIterator first, ForwardIterator last,<br />
4029 BinaryPredicate pred);<br />
4030 T template<class InputIterator, class OutputIterator><br />
4031 OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
4032 OutputIterator result);<br />
4033 T template<class InputIterator, class OutputIterator, class BinaryPredicate><br />
4034 OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
4035 OutputIterator result, BinaryPredicate pred);<br />
4036 T template<class BidirectionalIterator><br />
4037 void reverse(BidirectionalIterator first, BidirectionalIterator last);<br />
4038 T template<class BidirectionalIterator, class OutputIterator><br />
4039 OutputIterator reverse_copy(BidirectionalIterator first,<br />
4040 BidirectionalIterator last,<br />
4041 OutputIterator result);<br />
4043 T template<class ForwardIterator><br />
4044 void rotate(ForwardIterator first, ForwardIterator middle,<br />
4045 ForwardIterator last);<br />
4046 T template<class ForwardIterator, class OutputIterator><br />
4047 OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,<br />
4048 ForwardIterator last, OutputIterator result);<br />
4049 T template<class RandomAccessIterator><br />
4050 void random_shuffle(RandomAccessIterator first,<br />
4051 RandomAccessIterator last);<br />
4052 T template<class RandomAccessIterator, class RandomNumberGenerator><br />
4053 void random_shuffle(RandomAccessIterator first,<br />
4054 RandomAccessIterator last,<br />
4055 RandomNumberGenerator& rand);<br />
4056 // _lib.alg.partitions_, partitions:<br />
4057 T template<class BidirectionalIterator, class Predicate><br />
4058 BidirectionalIterator partition(BidirectionalIterator first,<br />
4059 BidirectionalIterator last,<br />
4060 Predicate pred);<br />
4061 T template<class BidirectionalIterator, class Predicate><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<class RandomAccessIterator><br />
4068 void sort(RandomAccessIterator first, RandomAccessIterator last);<br />
4069 T template<class RandomAccessIterator, class Compare><br />
4070 void sort(RandomAccessIterator first, RandomAccessIterator last,<br />
4071 Compare comp);<br />
4072 T template<class RandomAccessIterator><br />
4073 void stable_sort(RandomAccessIterator first, RandomAccessIterator last);<br />
4074 T template<class RandomAccessIterator, class Compare><br />
4075 void stable_sort(RandomAccessIterator first, RandomAccessIterator last,<br />
4076 Compare comp);<br />
4077 T template<class RandomAccessIterator><br />
4078 void partial_sort(RandomAccessIterator first,<br />
4079 RandomAccessIterator middle,<br />
4080 RandomAccessIterator last);<br />
4081 T template<class RandomAccessIterator, class Compare><br />
4082 void partial_sort(RandomAccessIterator first,<br />
4083 RandomAccessIterator middle,<br />
4084 RandomAccessIterator last, Compare comp);<br />
4085 T template<class InputIterator, class RandomAccessIterator><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<class InputIterator, class RandomAccessIterator, class Compare><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 />
4097 T template<class RandomAccessIterator><br />
4098 void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
4099 RandomAccessIterator last);<br />
4100 T template<class RandomAccessIterator, class Compare><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<class ForwardIterator, class T><br />
4105 ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
4106 const T& value);<br />
4107 T template<class ForwardIterator, class T, class Compare><br />
4108 ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
4109 const T& value, Compare comp);<br />
4110 T template<class ForwardIterator, class T><br />
4111 ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
4112 const T& value);<br />
4113 T template<class ForwardIterator, class T, class Compare><br />
4114 ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
4115 const T& value, Compare comp);<br />
4116 T template<class ForwardIterator, class T><br />
4117 pair<ForwardIterator, ForwardIterator><br />
4118 equal_range(ForwardIterator first, ForwardIterator last,<br />
4119 const T& value);<br />
4120 T template<class ForwardIterator, class T, class Compare><br />
4121 pair<ForwardIterator, ForwardIterator><br />
4122 equal_range(ForwardIterator first, ForwardIterator last,<br />
4123 const T& value, Compare comp);<br />
4124 T template<class ForwardIterator, class T><br />
4125 bool binary_search(ForwardIterator first, ForwardIterator last,<br />
4126 const T& value);<br />
4127 T template<class ForwardIterator, class T, class Compare><br />
4128 bool binary_search(ForwardIterator first, ForwardIterator last,<br />
4129 const T& value, Compare comp);<br />
4130 // _lib.alg.merge_, merge:<br />
4131 T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
4132 OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
4133 InputIterator2 first2, InputIterator2 last2,<br />
4134 OutputIterator result);<br />
4135 T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
4136 class Compare><br />
4137 OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
4138 InputIterator2 first2, InputIterator2 last2,<br />
4139 OutputIterator result, Compare comp);<br />
4140 T template<class BidirectionalIterator><br />
4141 void inplace_merge(BidirectionalIterator first,<br />
4142 BidirectionalIterator middle,<br />
4143 BidirectionalIterator last);<br />
4144 T template<class BidirectionalIterator, class Compare><br />
4145 void inplace_merge(BidirectionalIterator first,<br />
4146 BidirectionalIterator middle,<br />
4147 BidirectionalIterator last, Compare comp);<br />
4149 // _lib.alg.set.operations_, set operations:<br />
4150 T template<class InputIterator1, class InputIterator2><br />
4151 bool includes(InputIterator1 first1, InputIterator1 last1,<br />
4152 InputIterator2 first2, InputIterator2 last2);<br />
4153 T template<class InputIterator1, class InputIterator2, class Compare><br />
4154 bool includes(InputIterator1 first1, InputIterator1 last1,<br />
4155 InputIterator2 first2, InputIterator2 last2, Compare comp);<br />
4156 T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
4157 OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
4158 InputIterator2 first2, InputIterator2 last2,<br />
4159 OutputIterator result);<br />
4160 T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
4161 class Compare><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<class InputIterator1, class InputIterator2, class OutputIterator><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<class InputIterator1, class InputIterator2, class OutputIterator,<br />
4171 class Compare><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<class InputIterator1, class InputIterator2, class OutputIterator><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<class InputIterator1, class InputIterator2, class OutputIterator,<br />
4182 class Compare><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<class InputIterator1, class InputIterator2, class OutputIterator><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<class InputIterator1, class InputIterator2, class OutputIterator,<br />
4192 class Compare><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<class RandomAccessIterator><br />
4199 void push_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4200 T template<class RandomAccessIterator, class Compare><br />
4201 void push_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4202 Compare comp);<br />
4204 T template<class RandomAccessIterator><br />
4205 void pop_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4206 T template<class RandomAccessIterator, class Compare><br />
4207 void pop_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4208 Compare comp);<br />
4209 T template<class RandomAccessIterator><br />
4210 void make_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4211 T template<class RandomAccessIterator, class Compare><br />
4212 void make_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
4213 Compare comp);<br />
4214 T template<class RandomAccessIterator><br />
4215 void sort_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
4216 T template<class RandomAccessIterator, class Compare><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<class T> const T& min(const T& a, const T& b);<br />
4221 T template<class T, class Compare><br />
4222 const T& min(const T& a, const T& b, Compare comp);<br />
4223 T template<class T> const T& max(const T& a, const T& b);<br />
4224 T template<class T, class Compare><br />
4225 const T& max(const T& a, const T& b, Compare comp);<br />
4226 T template<class ForwardIterator><br />
4227 ForwardIterator min_element(ForwardIterator first, ForwardIterator last);<br />
4228 T template<class ForwardIterator, class Compare><br />
4229 ForwardIterator min_element(ForwardIterator first, ForwardIterator last,<br />
4230 Compare comp);<br />
4231 T template<class ForwardIterator><br />
4232 ForwardIterator max_element(ForwardIterator first, ForwardIterator last);<br />
4233 T template<class ForwardIterator, class Compare><br />
4234 ForwardIterator max_element(ForwardIterator first, ForwardIterator last,<br />
4235 Compare comp);<br />
4236 T template<class InputIterator1, class InputIterator2><br />
4237 bool lexicographical_compare<br />
4238 (InputIterator1 first1, InputIterator1 last1,<br />
4239 InputIterator2 first2, InputIterator2 last2);<br />
4240 T template<class InputIterator1, class InputIterator2, class Compare><br />
4241 bool lexicographical_compare<br />
4242 (InputIterator1 first1, InputIterator1 last1,<br />
4243 InputIterator2 first2, InputIterator2 last2,<br />
4244 Compare comp);<br />
4246 // _lib.alg.permutation.generators_, permutations<br />
4247 T template<class BidirectionalIterator><br />
4248 bool next_permutation(BidirectionalIterator first,<br />
4249 BidirectionalIterator last);<br />
4250 T template<class BidirectionalIterator, class Compare><br />
4251 bool next_permutation(BidirectionalIterator first,<br />
4252 BidirectionalIterator last, Compare comp);<br />
4253 T template<class BidirectionalIterator><br />
4254 bool prev_permutation(BidirectionalIterator first,<br />
4255 BidirectionalIterator last);<br />
4256 T template<class BidirectionalIterator, class Compare><br />
4257 bool prev_permutation(BidirectionalIterator first,<br />
4258 BidirectionalIterator last, Compare comp);<br />
4261 25.4 C library algorithms [lib.alg.c.library]<br />
4263 1 Header <cstdlib> (partial, Table 2):<br />
4265 Table 2--Header <cstdlib> synopsis<br />
4267 Functions: bsearch qsort<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 />
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 />
4284 26.2 Complex numbers [lib.complex.numbers]<br />
4287 26.2.1 Header <complex> synopsis [lib.complex.synopsis]<br />
4289 T template<class T> class complex;<br />
4290 T template<> class complex<float>;<br />
4291 T template<> class complex<double>;<br />
4292 T template<> class complex<long double>;<br />
4293 // _lib.complex.ops_ operators:<br />
4294 T template<class T><br />
4295 complex<T> operator+(const complex<T>&, const complex<T>&);<br />
4296 T template<class T> complex<T> operator+(const complex<T>&, const T&);<br />
4297 T template<class T> complex<T> operator+(const T&, const complex<T>&);<br />
4298 T template<class T> complex<T> operator-<br />
4299 (const complex<T>&, const complex<T>&);<br />
4300 T template<class T> complex<T> operator-(const complex<T>&, const T&);<br />
4301 T template<class T> complex<T> operator-(const T&, const complex<T>&);<br />
4302 T template<class T> complex<T> operator*<br />
4303 (const complex<T>&, const complex<T>&);<br />
4304 T template<class T> complex<T> operator*(const complex<T>&, const T&);<br />
4305 T template<class T> complex<T> operator*(const T&, const complex<T>&);<br />
4306 T template<class T> complex<T> operator/<br />
4307 (const complex<T>&, const complex<T>&);<br />
4308 T template<class T> complex<T> operator/(const complex<T>&, const T&);<br />
4309 T template<class T> complex<T> operator/(const T&, const complex<T>&);<br />
4310 T template<class T> complex<T> operator+(const complex<T>&);<br />
4311 T template<class T> complex<T> operator-(const complex<T>&);<br />
4312 T template<class T> bool operator==<br />
4313 (const complex<T>&, const complex<T>&);<br />
4314 T template<class T> bool operator==(const complex<T>&, const T&);<br />
4315 T template<class T> bool operator==(const T&, const complex<T>&);<br />
4316 T template<class T> bool operator!=(const complex<T>&, const complex<T>&);<br />
4317 T template<class T> bool operator!=(const complex<T>&, const T&);<br />
4318 T template<class T> bool operator!=(const T&, const complex<T>&);<br />
4319 T template<class T, class charT, class traits><br />
4320 basic_istream<charT, traits>&<br />
4321 operator>>(basic_istream<charT, traits>&, complex<T>&);<br />
4323 T template<class T, class charT, class traits><br />
4324 basic_ostream<charT, traits>&<br />
4325 operator<<(basic_ostream<charT, traits>&, const complex<T>&);<br />
4326 // _lib.complex.value.ops_ values:<br />
4327 T template<class T> T real(const complex<T>&);<br />
4328 T template<class T> T imag(const complex<T>&);<br />
4330 T template<class T> T abs(const complex<T>&);<br />
4331 T template<class T> T arg(const complex<T>&);<br />
4332 T template<class T> T norm(const complex<T>&);<br />
4333 T template<class T> complex<T> conj(const complex<T>&);<br />
4334 T template<class T> complex<T> polar(const T&, const T&);<br />
4335 // _lib.complex.transcendentals_ transcendentals:<br />
4336 T template<class T> complex<T> cos (const complex<T>&);<br />
4337 T template<class T> complex<T> cosh (const complex<T>&);<br />
4338 T template<class T> complex<T> exp (const complex<T>&);<br />
4339 T template<class T> complex<T> log (const complex<T>&);<br />
4340 T template<class T> complex<T> log10(const complex<T>&);<br />
4341 T template<class T> complex<T> pow(const complex<T>&, int);<br />
4342 T template<class T> complex<T> pow(const complex<T>&, const T&);<br />
4343 T template<class T> complex<T> pow(const complex<T>&, const complex<T>&);<br />
4344 T template<class T> complex<T> pow(const T&, const complex<T>&);<br />
4345 T template<class T> complex<T> sin (const complex<T>&);<br />
4346 T template<class T> complex<T> sinh (const complex<T>&);<br />
4347 T template<class T> complex<T> sqrt (const complex<T>&);<br />
4348 T template<class T> complex<T> tan (const complex<T>&);<br />
4349 T template<class T> complex<T> tanh (const complex<T>&);<br />
4352 26.2.2 Template class complex [lib.complex]<br />
4354 template<class T><br />
4355 T class complex {<br />
4357 T typedef T value_type;<br />
4359 T complex(const T& re = T(), const T& im = T());<br />
4360 T complex(const complex&);<br />
4361 T template<class X> complex(const complex<X>&);<br />
4363 T T real() const;<br />
4364 T T imag() const;<br />
4366 T complex<T>& operator= (const T&);<br />
4367 T complex<T>& operator+=(const T&);<br />
4368 T complex<T>& operator-=(const T&);<br />
4369 T complex<T>& operator*=(const T&);<br />
4370 T complex<T>& operator/=(const T&);<br />
4372 T complex& operator=(const complex&);<br />
4373 T template<class X> complex<T>& operator= (const complex<X>&);<br />
4374 T template<class X> complex<T>& operator+=(const complex<X>&);<br />
4375 T template<class X> complex<T>& operator-=(const complex<X>&);<br />
4376 T template<class X> complex<T>& operator*=(const complex<X>&);<br />
4377 T template<class X> complex<T>& operator/=(const complex<X>&);<br />
4380 T template<class T> complex<T> operator+<br />
4381 (const complex<T>&, const complex<T>&);<br />
4382 T template<class T> complex<T> operator+(const complex<T>&, const T&);<br />
4383 T template<class T> complex<T> operator+(const T&, const complex<T>&);<br />
4385 T template<class T> complex<T> operator-<br />
4386 (const complex<T>&, const complex<T>&);<br />
4387 T template<class T> complex<T> operator-(const complex<T>&, const T&);<br />
4388 T template<class T> complex<T> operator-(const T&, const complex<T>&);<br />
4390 T template<class T> complex<T> operator*<br />
4391 (const complex<T>&, const complex<T>&);<br />
4392 T template<class T> complex<T> operator*(const complex<T>&, const T&);<br />
4393 T template<class T> complex<T> operator*(const T&, const complex<T>&);<br />
4395 T template<class T> complex<T> operator/<br />
4396 (const complex<T>&, const complex<T>&);<br />
4397 T template<class T> complex<T> operator/(const complex<T>&, const T&);<br />
4398 T template<class T> complex<T> operator/(const T&, const complex<T>&);<br />
4400 T template<class T> complex<T> operator+(const complex<T>&);<br />
4401 T template<class T> complex<T> operator-(const complex<T>&);<br />
4403 T template<class T> bool operator==(const complex<T>&, const complex<T>&);<br />
4404 T template<class T> bool operator==(const complex<T>&, const T&);<br />
4405 T template<class T> bool operator==(const T&, const complex<T>&);<br />
4407 T template<class T> bool operator!=(const complex<T>&, const complex<T>&);<br />
4408 T template<class T> bool operator!=(const complex<T>&, const T&);<br />
4409 T template<class T> bool operator!=(const T&, const complex<T>&);<br />
4411 T template<class T, class charT, class traits><br />
4412 basic_istream<charT, traits>&<br />
4413 operator>>(basic_istream<charT, traits>&, complex<T>&);<br />
4415 T template<class T, class charT, class traits><br />
4416 basic_ostream<charT, traits>&<br />
4417 operator<<(basic_ostream<charT, traits>&, const complex<T>&);<br />
4420 26.2.3 complex specializations [lib.complex.special]<br />
4422 T template<> class complex<float> {<br />
4424 T typedef float value_type;<br />
4426 T complex(float re = 0.0f, float im = 0.0f);<br />
4427 T explicit complex(const complex<double>&);<br />
4428 T explicit complex(const complex<long double>&);<br />
4429 T float real() const;<br />
4430 T float imag() const;<br />
4432 T complex<float>& operator= (float);<br />
4433 T complex<float>& operator+=(float);<br />
4434 T complex<float>& operator-=(float);<br />
4435 T complex<float>& operator*=(float);<br />
4436 T complex<float>& operator/=(float);<br />
4438 T complex<float>& operator=(const complex<float>&);<br />
4439 T template<class X> complex<float>& operator= (const complex<X>&);<br />
4440 T template<class X> complex<float>& operator+=(const complex<X>&);<br />
4441 T template<class X> complex<float>& operator-=(const complex<X>&);<br />
4442 T template<class X> complex<float>& operator*=(const complex<X>&);<br />
4443 T template<class X> complex<float>& operator/=(const complex<X>&);<br />
4445 T template<> class complex<double> {<br />
4447 T typedef double value_type;<br />
4449 T complex(double re = 0.0, double im = 0.0);<br />
4450 T complex(const complex<float>&);<br />
4451 T explicit complex(const complex<long double>&);<br />
4452 T double real() const;<br />
4453 T double imag() const;<br />
4455 T complex<double>& operator= (double);<br />
4456 T complex<double>& operator+=(double);<br />
4457 T complex<double>& operator-=(double);<br />
4458 T complex<double>& operator*=(double);<br />
4459 T complex<double>& operator/=(double);<br />
4461 T complex<double>& operator=(const complex<double>&);<br />
4462 T template<class X> complex<double>& operator= (const complex<X>&);<br />
4463 T template<class X> complex<double>& operator+=(const complex<X>&);<br />
4464 T template<class X> complex<double>& operator-=(const complex<X>&);<br />
4465 T template<class X> complex<double>& operator*=(const complex<X>&);<br />
4466 T template<class X> complex<double>& operator/=(const complex<X>&);<br />
4469 T template<> class complex<long double> {<br />
4471 T typedef long double value_type;<br />
4473 T complex(long double re = 0.0L, long double im = 0.0L);<br />
4474 T complex(const complex<float>&);<br />
4475 T complex(const complex<double>&);<br />
4476 T long double real() const;<br />
4477 T long double imag() const;<br />
4479 T complex<long double>& operator=(const complex<long double>&);<br />
4480 T complex<long double>& operator= (long double);<br />
4481 T complex<long double>& operator+=(long double);<br />
4482 T complex<long double>& operator-=(long double);<br />
4483 T complex<long double>& operator*=(long double);<br />
4484 T complex<long double>& operator/=(long double);<br />
4486 T template<class X> complex<long double>& operator= (const complex<X>&);<br />
4487 T template<class X> complex<long double>& operator+=(const complex<X>&);<br />
4488 T template<class X> complex<long double>& operator-=(const complex<X>&);<br />
4489 T template<class X> complex<long double>& operator*=(const complex<X>&);<br />
4490 T template<class X> complex<long double>& operator/=(const complex<X>&);<br />
4493 26.3 Numeric arrays [lib.numarray]<br />
4495 26.3.1 Header <valarray> synopsis [lib.valarray.synopsis]<br />
4497 T template<class T> class valarray; // An array of type T<br />
4498 T class slice;<br />
4499 T template<class T> class slice_array;<br />
4500 T class gslice;<br />
4501 T template<class T> class gslice_array;<br />
4502 T template<class T> class mask_array; // a masked array<br />
4503 T template<class T> class indirect_array; // an indirected array<br />
4505 T template<class T> valarray<T> operator*<br />
4506 (const valarray<T>&, const valarray<T>&);<br />
4507 T template<class T> valarray<T> operator* (const valarray<T>&, const T&);<br />
4508 T template<class T> valarray<T> operator* (const T&, const valarray<T>&);<br />
4509 T template<class T> valarray<T> operator/<br />
4510 (const valarray<T>&, const valarray<T>&);<br />
4511 T template<class T> valarray<T> operator/ (const valarray<T>&, const T&);<br />
4512 T template<class T> valarray<T> operator/ (const T&, const valarray<T>&);<br />
4513 T template<class T> valarray<T> operator%<br />
4514 (const valarray<T>&, const valarray<T>&);<br />
4515 T template<class T> valarray<T> operator% (const valarray<T>&, const T&);<br />
4516 T template<class T> valarray<T> operator% (const T&, const valarray<T>&);<br />
4517 T template<class T> valarray<T> operator+<br />
4518 (const valarray<T>&, const valarray<T>&);<br />
4519 T template<class T> valarray<T> operator+ (const valarray<T>&, const T&);<br />
4520 T template<class T> valarray<T> operator+ (const T&, const valarray<T>&);<br />
4521 T template<class T> valarray<T> operator-<br />
4522 (const valarray<T>&, const valarray<T>&);<br />
4523 T template<class T> valarray<T> operator- (const valarray<T>&, const T&);<br />
4524 T template<class T> valarray<T> operator- (const T&, const valarray<T>&);<br />
4525 T template<class T> valarray<T> operator^<br />
4526 (const valarray<T>&, const valarray<T>&);<br />
4527 T template<class T> valarray<T> operator^ (const valarray<T>&, const T&);<br />
4528 T template<class T> valarray<T> operator^ (const T&, const valarray<T>&);<br />
4529 T template<class T> valarray<T> operator&<br />
4530 (const valarray<T>&, const valarray<T>&);<br />
4531 T template<class T> valarray<T> operator& (const valarray<T>&, const T&);<br />
4532 T template<class T> valarray<T> operator& (const T&, const valarray<T>&);<br />
4533 T template<class T> valarray<T> operator|<br />
4534 (const valarray<T>&, const valarray<T>&);<br />
4535 T template<class T> valarray<T> operator| (const valarray<T>&, const T&);<br />
4536 T template<class T> valarray<T> operator| (const T&, const valarray<T>&);<br />
4537 T template<class T> valarray<T> operator<<<br />
4538 (const valarray<T>&, const valarray<T>&);<br />
4539 T template<class T> valarray<T> operator<<(const valarray<T>&, const T&);<br />
4540 T template<class T> valarray<T> operator<<(const T&, const valarray<T>&);<br />
4541 T template<class T> valarray<T> operator>><br />
4542 (const valarray<T>&, const valarray<T>&);<br />
4543 T template<class T> valarray<T> operator>>(const valarray<T>&, const T&);<br />
4544 T template<class T> valarray<T> operator>>(const T&, const valarray<T>&);<br />
4545 T template<class T> valarray<bool> operator&&<br />
4546 (const valarray<T>&, const valarray<T>&);<br />
4547 T template<class T> valarray<bool> operator&&(const valarray<T>&, const T&);<br />
4548 T template<class T> valarray<bool> operator&&(const T&, const valarray<T>&);<br />
4549 T template<class T> valarray<bool> operator||<br />
4550 (const valarray<T>&, const valarray<T>&);<br />
4551 T template<class T> valarray<bool> operator||(const valarray<T>&, const T&);<br />
4552 T template<class T> valarray<bool> operator||(const T&, const valarray<T>&);<br />
4554 T template<class T><br />
4555 valarray<bool> operator==(const valarray<T>&, const valarray<T>&);<br />
4556 T template<class T> valarray<bool> operator==(const valarray<T>&, const T&);<br />
4557 T template<class T> valarray<bool> operator==(const T&, const valarray<T>&);<br />
4558 T template<class T><br />
4559 valarray<bool> operator!=(const valarray<T>&, const valarray<T>&);<br />
4560 T template<class T> valarray<bool> operator!=(const valarray<T>&, const T&);<br />
4561 T template<class T> valarray<bool> operator!=(const T&, const valarray<T>&);<br />
4562 T template<class T><br />
4563 valarray<bool> operator< (const valarray<T>&, const valarray<T>&);<br />
4564 T template<class T> valarray<bool> operator< (const valarray<T>&, const T&);<br />
4565 T template<class T> valarray<bool> operator< (const T&, const valarray<T>&);<br />
4566 T template<class T><br />
4567 valarray<bool> operator> (const valarray<T>&, const valarray<T>&);<br />
4568 T template<class T> valarray<bool> operator> (const valarray<T>&, const T&);<br />
4569 T template<class T> valarray<bool> operator> (const T&, const valarray<T>&);<br />
4570 T template<class T><br />
4571 valarray<bool> operator<=(const valarray<T>&, const valarray<T>&);<br />
4572 T template<class T> valarray<bool> operator<=(const valarray<T>&, const T&);<br />
4573 T template<class T> valarray<bool> operator<=(const T&, const valarray<T>&);<br />
4574 T template<class T><br />
4575 valarray<bool> operator>=(const valarray<T>&, const valarray<T>&);<br />
4576 T template<class T> valarray<bool> operator>=(const valarray<T>&, const T&);<br />
4577 T template<class T> valarray<bool> operator>=(const T&, const valarray<T>&);<br />
4578 T template<class T> valarray<T> abs (const valarray<T>&);<br />
4579 T template<class T> valarray<T> acos (const valarray<T>&);<br />
4580 T template<class T> valarray<T> asin (const valarray<T>&);<br />
4581 T template<class T> valarray<T> atan (const valarray<T>&);<br />
4582 T template<class T> valarray<T> atan2<br />
4583 (const valarray<T>&, const valarray<T>&);<br />
4584 T template<class T> valarray<T> atan2(const valarray<T>&, const T&);<br />
4585 T template<class T> valarray<T> atan2(const T&, const valarray<T>&);<br />
4586 T template<class T> valarray<T> cos (const valarray<T>&);<br />
4587 T template<class T> valarray<T> cosh (const valarray<T>&);<br />
4588 T template<class T> valarray<T> exp (const valarray<T>&);<br />
4589 T template<class T> valarray<T> log (const valarray<T>&);<br />
4590 T template<class T> valarray<T> log10(const valarray<T>&);<br />
4591 T template<class T> valarray<T> pow(const valarray<T>&, const valarray<T>&);<br />
4592 T template<class T> valarray<T> pow(const valarray<T>&, const T&);<br />
4593 T template<class T> valarray<T> pow(const T&, const valarray<T>&);<br />
4594 T template<class T> valarray<T> sin (const valarray<T>&);<br />
4595 T template<class T> valarray<T> sinh (const valarray<T>&);<br />
4596 T template<class T> valarray<T> sqrt (const valarray<T>&);<br />
4597 T template<class T> valarray<T> tan (const valarray<T>&);<br />
4598 T template<class T> valarray<T> tanh (const valarray<T>&);<br />
4602 26.3.2 Template class valarray [lib.template.valarray]<br />
4604 T template<class T> class valarray {<br />
4606 T typedef T value_type;<br />
4608 // _lib.valarray.cons_ construct/destroy:<br />
4610 T explicit valarray(size_t);<br />
4611 T valarray(const T&, size_t);<br />
4612 T valarray(const T*, size_t);<br />
4613 T valarray(const valarray&);<br />
4614 T valarray(const slice_array<T>&);<br />
4615 T valarray(const gslice_array<T>&);<br />
4616 T valarray(const mask_array<T>&);<br />
4617 T valarray(const indirect_array<T>&);<br />
4618 T ~valarray();<br />
4620 // _lib.valarray.assign_ assignment:<br />
4621 T valarray<T>& operator=(const valarray<T>&);<br />
4622 T valarray<T>& operator=(const T&);<br />
4623 T valarray<T>& operator=(const slice_array<T>&);<br />
4624 T valarray<T>& operator=(const gslice_array<T>&);<br />
4625 T valarray<T>& operator=(const mask_array<T>&);<br />
4626 T valarray<T>& operator=(const indirect_array<T>&);<br />
4627 // _lib.valarray.access_ element access:<br />
4628 T T operator[](size_t) const;<br />
4629 T T& operator[](size_t);<br />
4630 // _lib.valarray.sub_ subset operations:<br />
4631 T valarray<T> operator[](slice) const;<br />
4632 T slice_array<T> operator[](slice);<br />
4633 T valarray<T> operator[](const gslice&) const;<br />
4634 T gslice_array<T> operator[](const gslice&);<br />
4635 T valarray<T> operator[](const valarray<bool>&) const;<br />
4636 T mask_array<T> operator[](const valarray<bool>&);<br />
4637 T valarray<T> operator[](const valarray<size_t>&) const;<br />
4638 T indirect_array<T> operator[](const valarray<size_t>&);<br />
4639 // _lib.valarray.unary_ unary operators:<br />
4640 T valarray<T> operator+() const;<br />
4641 T valarray<T> operator-() const;<br />
4642 T valarray<T> operator~() const;<br />
4643 T valarray<T> operator!() const;<br />
4644 // _lib.valarray.cassign_ computed assignment:<br />
4645 T valarray<T>& operator*= (const T&);<br />
4646 T valarray<T>& operator/= (const T&);<br />
4647 T valarray<T>& operator%= (const T&);<br />
4648 T valarray<T>& operator+= (const T&);<br />
4649 T valarray<T>& operator-= (const T&);<br />
4650 T valarray<T>& operator^= (const T&);<br />
4651 T valarray<T>& operator&= (const T&);<br />
4652 T valarray<T>& operator|= (const T&);<br />
4653 T valarray<T>& operator<<=(const T&);<br />
4654 T valarray<T>& operator>>=(const T&);<br />
4655 T valarray<T>& operator*= (const valarray<T>&);<br />
4656 T valarray<T>& operator/= (const valarray<T>&);<br />
4657 T valarray<T>& operator%= (const valarray<T>&);<br />
4658 T valarray<T>& operator+= (const valarray<T>&);<br />
4659 T valarray<T>& operator-= (const valarray<T>&);<br />
4660 T valarray<T>& operator^= (const valarray<T>&);<br />
4661 T valarray<T>& operator|= (const valarray<T>&);<br />
4662 T valarray<T>& operator&= (const valarray<T>&);<br />
4663 T valarray<T>& operator<<=(const valarray<T>&);<br />
4664 T valarray<T>& operator>>=(const valarray<T>&);<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 />
4671 T valarray<T> shift (int) const;<br />
4672 T valarray<T> cshift(int) const;<br />
4673 T valarray<T> apply(T func(T)) const;<br />
4674 T valarray<T> apply(T func(const T&)) const;<br />
4675 T void resize(size_t sz, T c = T());<br />
4681 26.3.4 Class slice [lib.class.slice]<br />
4683 T class slice {<br />
4686 T slice(size_t, size_t, size_t);<br />
4688 T size_t start() const;<br />
4689 T size_t size() const;<br />
4690 T size_t stride() const;<br />
4696 26.3.5 Template class slice_array [lib.template.slice.array]<br />
4698 T template <class T> class slice_array {<br />
4700 T typedef T value_type;<br />
4702 T void operator= (const valarray<T>&) const;<br />
4703 T void operator*= (const valarray<T>&) const;<br />
4704 T void operator/= (const valarray<T>&) const;<br />
4705 T void operator%= (const valarray<T>&) const;<br />
4706 T void operator+= (const valarray<T>&) const;<br />
4707 T void operator-= (const valarray<T>&) const;<br />
4708 T void operator^= (const valarray<T>&) const;<br />
4709 T void operator&= (const valarray<T>&) const;<br />
4710 T void operator|= (const valarray<T>&) const;<br />
4711 T void operator<<=(const valarray<T>&) const;<br />
4712 T void operator>>=(const valarray<T>&) const;<br />
4713 T void operator=(const T&);<br />
4714 T ~slice_array();<br />
4716 T slice_array();<br />
4717 T slice_array(const slice_array&);<br />
4718 T slice_array& operator=(const slice_array&);<br />
4724 26.3.6 The gslice class [lib.class.gslice]<br />
4726 T class gslice {<br />
4729 T gslice(size_t s, const valarray<size_t>& l, const valarray<size_t>& d);<br />
4731 T size_t start() const;<br />
4732 T valarray<size_t> size() const;<br />
4733 T valarray<size_t> stride() const;<br />
4737 26.3.7 Template class gslice_array [lib.template.gslice.array]<br />
4739 T template <class T> class gslice_array {<br />
4741 T typedef T value_type;<br />
4743 T void operator= (const valarray<T>&) const;<br />
4744 T void operator*= (const valarray<T>&) const;<br />
4745 T void operator/= (const valarray<T>&) const;<br />
4746 T void operator%= (const valarray<T>&) const;<br />
4747 T void operator+= (const valarray<T>&) const;<br />
4748 T void operator-= (const valarray<T>&) const;<br />
4749 T void operator^= (const valarray<T>&) const;<br />
4750 T void operator&= (const valarray<T>&) const;<br />
4751 T void operator|= (const valarray<T>&) const;<br />
4752 T void operator<<=(const valarray<T>&) const;<br />
4753 T void operator>>=(const valarray<T>&) const;<br />
4754 T void operator=(const T&);<br />
4755 T ~gslice_array();<br />
4757 T gslice_array();<br />
4758 T gslice_array(const gslice_array&);<br />
4759 T gslice_array& operator=(const gslice_array&);<br />
4763 26.3.8 Template class mask_array [lib.template.mask.array]<br />
4765 T template <class T> class mask_array {<br />
4767 T typedef T value_type;<br />
4769 T void operator= (const valarray<T>&) const;<br />
4770 T void operator*= (const valarray<T>&) const;<br />
4771 T void operator/= (const valarray<T>&) const;<br />
4772 T void operator%= (const valarray<T>&) const;<br />
4773 T void operator+= (const valarray<T>&) const;<br />
4774 T void operator-= (const valarray<T>&) const;<br />
4775 T void operator^= (const valarray<T>&) const;<br />
4776 T void operator&= (const valarray<T>&) const;<br />
4777 T void operator|= (const valarray<T>&) const;<br />
4778 T void operator<<=(const valarray<T>&) const;<br />
4779 T void operator>>=(const valarray<T>&) const;<br />
4780 T void operator=(const T&);<br />
4781 T ~mask_array();<br />
4783 T mask_array();<br />
4784 T mask_array(const mask_array&);<br />
4785 T mask_array& operator=(const mask_array&);<br />
4786 // remainder implementation defined<br />
4790 26.3.9 Template class [lib.template.indirect.array]<br />
4791 indirect_array<br />
4793 T template <class T> class indirect_array {<br />
4795 T typedef T value_type;<br />
4797 T void operator= (const valarray<T>&) const;<br />
4798 T void operator*= (const valarray<T>&) const;<br />
4799 T void operator/= (const valarray<T>&) const;<br />
4800 T void operator%= (const valarray<T>&) const;<br />
4801 T void operator+= (const valarray<T>&) const;<br />
4802 T void operator-= (const valarray<T>&) const;<br />
4803 T void operator^= (const valarray<T>&) const;<br />
4804 T void operator&= (const valarray<T>&) const;<br />
4805 T void operator|= (const valarray<T>&) const;<br />
4806 T void operator<<=(const valarray<T>&) const;<br />
4807 T void operator>>=(const valarray<T>&) const;<br />
4808 T void operator=(const T&);<br />
4809 T ~indirect_array();<br />
4811 T indirect_array();<br />
4812 T indirect_array(const indirect_array&);<br />
4813 T indirect_array& operator=(const indirect_array&);<br />
4814 // remainder implementation defined<br />
4817 26.4 Generalized numeric operations [lib.numeric.ops]<br />
4819 Header <numeric> synopsis<br />
4821 T template <class InputIterator, class T><br />
4822 T accumulate(InputIterator first, InputIterator last, T init);<br />
4824 T template <class InputIterator, class T, class BinaryOperation><br />
4825 T accumulate(InputIterator first, InputIterator last, T init,<br />
4826 BinaryOperation binary_op);<br />
4828 T template <class InputIterator1, class InputIterator2, class T><br />
4829 T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
4830 InputIterator2 first2, T init);<br />
4832 T template <class InputIterator1, class InputIterator2, class T,<br />
4833 class BinaryOperation1, class BinaryOperation2><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 />
4839 T template <class InputIterator, class OutputIterator><br />
4840 OutputIterator partial_sum(InputIterator first,<br />
4841 InputIterator last,<br />
4842 OutputIterator result);<br />
4844 T template <class InputIterator, class OutputIterator,<br />
4845 class BinaryOperation><br />
4846 OutputIterator partial_sum(InputIterator first,<br />
4847 InputIterator last,<br />
4848 OutputIterator result,<br />
4849 BinaryOperation binary_op);<br />
4851 T template <class InputIterator, class OutputIterator><br />
4852 OutputIterator adjacent_difference(InputIterator first,<br />
4853 InputIterator last,<br />
4854 OutputIterator result);<br />
4856 T template <class InputIterator, class OutputIterator,<br />
4857 class BinaryOperation><br />
4858 OutputIterator adjacent_difference(InputIterator first,<br />
4859 InputIterator last,<br />
4860 OutputIterator result,<br />
4861 BinaryOperation binary_op);<br />
4864 26.5 C Library [lib.c.math]<br />
4866 Table 2--Header <cmath> synopsis<br />
4867 X Macro: HUGE_VAL<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 />
4875 Table 3--Header <cstdlib> synopsis<br />
4876 X Macros: RAND_MAX<br />
4877 X Types: div_t ldiv_t<br />
4879 X abs labs srand<br />
4880 X div ldiv rand<br />
4882 X long abs(long); // labs()<br />
4883 X ldiv_t div(long, long); // ldiv()<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 />
4910 X double abs(double); // fabs()<br />
4911 X double pow(double, int);<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 />
4938 Header <iosfwd> synopsis<br />
4940 X template<class charT> class char_traits;<br />
4941 X template<> class char_traits<char>;<br />
4942 X template<> class char_traits<wchar_t>;<br />
4943 X template<class T> class allocator;<br />
4944 X template <class charT, class traits = char_traits<charT> ><br />
4945 class basic_ios;<br />
4947 X template <class charT, class traits = char_traits<charT> ><br />
4948 class basic_streambuf;<br />
4950 X template <class charT, class traits = char_traits<charT> ><br />
4951 class basic_istream;<br />
4953 X template <class charT, class traits = char_traits<charT> ><br />
4954 class basic_ostream;<br />
4956 X template <class charT, class traits = char_traits<charT> ><br />
4957 class basic_iostream;<br />
4959 X template <class charT, class traits = char_traits<charT>,<br />
4960 class Allocator = allocator<charT> ><br />
4961 class basic_stringbuf;<br />
4963 X template <class charT, class traits = char_traits<charT>,<br />
4964 class Allocator = allocator<charT> ><br />
4965 class basic_istringstream;<br />
4967 X template <class charT, class traits = char_traits<charT>,<br />
4968 class Allocator = allocator<charT> ><br />
4969 class basic_ostringstream;<br />
4971 X template <class charT, class traits = char_traits<charT>,<br />
4972 class Allocator = allocator<charT> ><br />
4973 class basic_stringstream;<br />
4975 X template <class charT, class traits = char_traits<charT> ><br />
4976 class basic_filebuf;<br />
4978 X template <class charT, class traits = char_traits<charT> ><br />
4979 class basic_ifstream;<br />
4981 X template <class charT, class traits = char_traits<charT> ><br />
4982 class basic_ofstream;<br />
4984 X template <class charT, class traits = char_traits<charT> ><br />
4985 class basic_fstream;<br />
4986 X template <class charT, class traits = char_traits<charT> ><br />
4987 class istreambuf_iterator;<br />
4989 X template <class charT, class traits = char_traits<charT> ><br />
4990 class ostreambuf_iterator;<br />
4991 X typedef basic_ios<char> ios;<br />
4992 X typedef basic_ios<wchar_t> wios;<br />
4993 X typedef basic_streambuf<char> streambuf;<br />
4994 X typedef basic_istream<char> istream;<br />
4995 X typedef basic_ostream<char> ostream;<br />
4996 X typedef basic_iostream<char> iostream;<br />
4997 X typedef basic_stringbuf<char> stringbuf;<br />
4998 X typedef basic_istringstream<char> istringstream;<br />
4999 X typedef basic_ostringstream<char> ostringstream;<br />
5000 X typedef basic_stringstream<char> stringstream;<br />
5001 X typedef basic_filebuf<char> filebuf;<br />
5002 X typedef basic_ifstream<char> ifstream;<br />
5003 X typedef basic_ofstream<char> ofstream;<br />
5004 X typedef basic_fstream<char> fstream;<br />
5005 X typedef basic_streambuf<wchar_t> wstreambuf;<br />
5006 X typedef basic_istream<wchar_t> wistream;<br />
5007 X typedef basic_ostream<wchar_t> wostream;<br />
5008 X typedef basic_iostream<wchar_t> wiostream;<br />
5009 X typedef basic_stringbuf<wchar_t> wstringbuf;<br />
5010 X typedef basic_istringstream<wchar_t> wistringstream;<br />
5011 X typedef basic_ostringstream<wchar_t> wostringstream;<br />
5012 X typedef basic_stringstream<wchar_t> wstringstream;<br />
5014 X typedef basic_filebuf<wchar_t> wfilebuf;<br />
5015 X typedef basic_ifstream<wchar_t> wifstream;<br />
5016 X typedef basic_ofstream<wchar_t> wofstream;<br />
5017 X typedef basic_fstream<wchar_t> wfstream;<br />
5018 X template <class state> class fpos;<br />
5019 X typedef fpos<char_traits<char>::state_type> streampos;<br />
5020 X typedef fpos<char_traits<wchar_t>::state_type> wstreampos;<br />
5022 27.3 Standard iostream objects [lib.iostream.objects]<br />
5024 Header <iostream> synopsis<br />
5026 T [must also include <istream> and <ostream>]<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 />
5032 T extern wistream wcin;<br />
5033 T extern wostream wcout;<br />
5034 T extern wostream wcerr;<br />
5035 T extern wostream wclog;<br />
5037 27.4 Iostreams base classes [lib.iostreams.base]<br />
5039 Header <ios> synopsis<br />
5041 #include <iosfwd><br />
5043 T typedef OFF_T streamoff;<br />
5044 T typedef SZ_T streamsize;<br />
5045 T template <class stateT> class fpos;<br />
5047 class ios_base;<br />
5048 template <class charT, class traits = char_traits<charT> ><br />
5049 class basic_ios;<br />
5050 // _lib.std.ios.manip_, manipulators:<br />
5051 T ios_base& boolalpha (ios_base& str);<br />
5052 T ios_base& noboolalpha(ios_base& str);<br />
5053 T ios_base& showbase (ios_base& str);<br />
5054 T ios_base& noshowbase (ios_base& str);<br />
5055 T ios_base& showpoint (ios_base& str);<br />
5056 T ios_base& noshowpoint(ios_base& str);<br />
5057 T ios_base& showpos (ios_base& str);<br />
5058 T ios_base& noshowpos (ios_base& str);<br />
5059 T ios_base& skipws (ios_base& str);<br />
5060 T ios_base& noskipws (ios_base& str);<br />
5061 T ios_base& nouppercase(ios_base& str);<br />
5062 T ios_base& uppercase (ios_base& str);<br />
5063 M ios_base& unitbuf (ios_base& str);<br />
5064 M ios_base& nounitbuf (ios_base& str);<br />
5065 // _lib.adjustfield.manip_ adjustfield:<br />
5066 T ios_base& internal (ios_base& str);<br />
5067 T ios_base& left (ios_base& str);<br />
5068 T ios_base& right (ios_base& str);<br />
5069 // _lib.basefield.manip_ basefield:<br />
5070 T ios_base& dec (ios_base& str);<br />
5071 T ios_base& hex (ios_base& str);<br />
5072 T ios_base& oct (ios_base& str);<br />
5074 // _lib.floatfield.manip_ floatfield:<br />
5075 T ios_base& fixed (ios_base& str);<br />
5076 T ios_base& scientific (ios_base& str);<br />
5079 27.4.2 Class ios_base [lib.ios.base]<br />
5081 T class ios_base {<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 />
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 />
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& loc);<br />
5133 T locale getloc() const;<br />
5134 // _lib.ios.base.storage_ storage:<br />
5135 T static int xalloc();<br />
5136 T long& iword(int index);<br />
5137 T void*& pword(int index);<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&, 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 />
5149 27.4.2.1.1 Class ios_base::failure [lib.ios::failure]<br />
5151 T class ios_base::failure : public exception {<br />
5153 T explicit failure(const string& msg);<br />
5154 T virtual ~failure();<br />
5155 T virtual const char* what() const throw();<br />
5159 27.4.2.1.6 Class ios_base::Init [lib.ios::Init]<br />
5161 T class ios_base::Init {<br />
5168 27.4.3 Template class fpos [lib.fpos]<br />
5170 X template <class stateT> class fpos {<br />
5172 // _lib.fpos.members_ Members<br />
5173 T stateT state() const;<br />
5174 T void state(stateT);<br />
5176 T stateT st; // exposition only<br />
5180 27.4.5 Template class basic_ios [lib.ios]<br />
5182 template <class charT, class traits = char_traits<charT> ><br />
5183 X class basic_ios : public ios_base {<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<charT,traits>* sb);<br />
5205 T virtual ~basic_ios();<br />
5206 // _lib.basic.ios.members_ Members:<br />
5207 T basic_ostream<charT,traits>* tie() const;<br />
5208 T basic_ostream<charT,traits>* tie(basic_ostream<charT,traits>* tiestr);<br />
5209 T basic_streambuf<charT,traits>* rdbuf() const;<br />
5210 T basic_streambuf<charT,traits>* rdbuf(basic_streambuf<charT,traits>* sb);<br />
5211 X basic_ios& copyfmt(const basic_ios& 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& loc);<br />
5216 X char narrow(char_type c, char dfault) const;<br />
5217 X char_type widen(char c) const;<br />
5220 T void init(basic_streambuf<charT,traits>* sb);<br />
5222 T basic_ios(const basic_ios& ); // not defined<br />
5223 T basic_ios& operator=(const basic_ios&); // not defined<br />
5227 27.5 Stream buffers [lib.stream.buffers]<br />
5229 Header <streambuf> synopsis<br />
5231 X template <class charT, class traits = char_traits<charT> ><br />
5232 class basic_streambuf;<br />
5233 T typedef basic_streambuf<char> streambuf;<br />
5234 T typedef basic_streambuf<wchar_t> wstreambuf;<br />
5236 27.5.2 Template class [lib.streambuf]<br />
5237 basic_streambuf<charT,traits><br />
5239 template <class charT, class traits = char_traits<charT> ><br />
5240 X class basic_streambuf {<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 &loc);<br />
5252 T locale getloc() const;<br />
5253 // _lib.streambuf.buffer_ buffer and positioning:<br />
5254 T basic_streambuf<char_type,traits>*<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 />
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 />
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 &loc);<br />
5294 // _lib.streambuf.virt.buffer_ Buffer management and positioning:<br />
5295 T virtual basic_streambuf<char_type,traits>*<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 />
5314 27.6 Formatting and manipulators [lib.iostream.format]<br />
5316 Header <istream> synopsis<br />
5318 T template <class charT, class traits = char_traits<charT> ><br />
5319 class basic_istream;<br />
5320 T typedef basic_istream<char> istream;<br />
5321 T typedef basic_istream<wchar_t> wistream;<br />
5323 T template <class charT, class traits = char_traits<charT> ><br />
5324 class basic_iostream;<br />
5325 T typedef basic_iostream<char> iostream;<br />
5326 T typedef basic_iostream<wchar_t> wiostream;<br />
5328 X template <class charT, class traits><br />
5329 basic_istream<charT,traits>& ws(basic_istream<charT,traits>& is);<br />
5331 Header <ostream> synopsis<br />
5333 X template <class charT, class traits = char_traits<charT> ><br />
5334 class basic_ostream;<br />
5335 T typedef basic_ostream<char> ostream;<br />
5336 T typedef basic_ostream<wchar_t> wostream;<br />
5338 T template <class charT, class traits><br />
5339 basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);<br />
5340 T template <class charT, class traits><br />
5341 basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os);<br />
5342 T template <class charT, class traits><br />
5343 basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os);<br />
5345 Header <iomanip> synopsis<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<charT> T4 setfill(charT c);<br />
5352 T T5 setprecision(int n);<br />
5353 T T6 setw(int n);<br />
5356 27.6.1.1 Template class basic_istream [lib.istream]<br />
5358 template <class charT, class traits = char_traits<charT> ><br />
5359 T class basic_istream : virtual public basic_ios<charT,traits> {<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<charT,traits>* sb);<br />
5369 T virtual ~basic_istream();<br />
5370 // _lib.istream::sentry_ Prefix/suffix:<br />
5371 T class sentry;<br />
5373 // _lib.istream.formatted_ Formatted input:<br />
5374 T basic_istream<charT,traits>& operator>><br />
5375 (basic_istream<charT,traits>& (*pf)(basic_istream<charT,traits>&))<br />
5376 T basic_istream<charT,traits>& operator>><br />
5377 (basic_ios<charT,traits>& (*pf)(basic_ios<charT,traits>&))<br />
5378 T basic_istream<charT,traits>& operator>><br />
5379 (ios_base& (*pf)(ios_base&))<br />
5380 S basic_istream<charT,traits>& operator>>(bool& n);<br />
5381 S basic_istream<charT,traits>& operator>>(short& n);<br />
5382 S basic_istream<charT,traits>& operator>>(unsigned short& n);<br />
5383 S basic_istream<charT,traits>& operator>>(int& n);<br />
5384 S basic_istream<charT,traits>& operator>>(unsigned int& n);<br />
5385 S basic_istream<charT,traits>& operator>>(long& n);<br />
5386 S basic_istream<charT,traits>& operator>>(unsigned long& n);<br />
5387 S basic_istream<charT,traits>& operator>>(float& f);<br />
5388 S basic_istream<charT,traits>& operator>>(double& f);<br />
5389 S basic_istream<charT,traits>& operator>>(long double& f);<br />
5390 S basic_istream<charT,traits>& operator>>(void*& p);<br />
5391 S basic_istream<charT,traits>& operator>><br />
5392 (basic_streambuf<char_type,traits>* 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<charT,traits>& get(char_type& c);<br />
5397 S basic_istream<charT,traits>& get(char_type* s, streamsize n);<br />
5398 S basic_istream<charT,traits>& get(char_type* s, streamsize n,<br />
5399 char_type delim);<br />
5400 S basic_istream<charT,traits>& get(basic_streambuf<char_type,traits>& sb);<br />
5401 S basic_istream<charT,traits>& get(basic_streambuf<char_type,traits>& sb,<br />
5402 char_type delim);<br />
5403 S basic_istream<charT,traits>& getline(char_type* s, streamsize n);<br />
5404 S basic_istream<charT,traits>& getline(char_type* s, streamsize n,<br />
5405 char_type delim);<br />
5406 S basic_istream<charT,traits>& ignore<br />
5407 (streamsize n = 1, int_type delim = traits::eof());<br />
5408 S int_type peek();<br />
5409 S basic_istream<charT,traits>& read (char_type* s, streamsize n);<br />
5410 S streamsize readsome(char_type* s, streamsize n);<br />
5411 S basic_istream<charT,traits>& putback(char_type c);<br />
5412 S basic_istream<charT,traits>& unget();<br />
5415 S pos_type tellg();<br />
5416 S basic_istream<charT,traits>& seekg(pos_type);<br />
5417 S basic_istream<charT,traits>& seekg(off_type, ios_base::seekdir);<br />
5420 // _lib.istream::extractors_ character extraction templates:<br />
5421 S template<class charT, class traits><br />
5422 basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&,<br />
5424 S template<class traits><br />
5425 basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
5426 unsigned char&);<br />
5427 S template<class traits><br />
5428 basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
5429 signed char&);<br />
5431 S template<class charT, class traits><br />
5432 basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&,<br />
5434 S template<class traits><br />
5435 basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
5436 unsigned char*);<br />
5437 S template<class traits><br />
5438 basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
5439 signed char*);<br />
5441 27.6.1.1.2 Class basic_istream::sentry [lib.istream::sentry]<br />
5444 template <class charT,class traits = char_traits<charT> ><br />
5445 S class basic_istream<charT,traits>::sentry {<br />
5446 typedef traits traits_type;<br />
5447 S bool ok_; // exposition only<br />
5449 S explicit sentry(basic_istream<charT,traits>& is, bool noskipws = false);<br />
5451 S operator bool() const { return ok_; }<br />
5453 T sentry(const sentry&); // not defined<br />
5454 T sentry& operator=(const sentry&); // not defined<br />
5458 27.6.1.5 Template class basic_iostream [lib.iostreamclass]<br />
5460 template <class charT, class traits = char_traits<charT> ><br />
5461 T class basic_iostream :<br />
5462 public basic_istream<charT,traits>,<br />
5463 public basic_ostream<charT,traits> {<br />
5465 // constructor/destructor<br />
5466 T explicit basic_iostream(basic_streambuf<charT,traits>* sb);<br />
5467 T virtual ~basic_iostream();<br />
5471 27.6.2.1 Template class basic_ostream [lib.ostream]<br />
5473 template <class charT, class traits = char_traits<charT> ><br />
5474 X class basic_ostream : virtual public basic_ios<charT,traits> {<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<char_type,traits>* 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<charT,traits>& operator<<<br />
5489 (basic_ostream<charT,traits>& (*pf)(basic_ostream<charT,traits>&));<br />
5490 T basic_ostream<charT,traits>& operator<<<br />
5491 (basic_ios<charT,traits>& (*pf)(basic_ios<charT,traits>&));<br />
5492 T basic_ostream<charT,traits>& operator<<<br />
5493 (ios_base& (*pf)(ios_base&));<br />
5494 T basic_ostream<charT,traits>& operator<<(bool n);<br />
5495 T basic_ostream<charT,traits>& operator<<(short n);<br />
5496 T basic_ostream<charT,traits>& operator<<(unsigned short n);<br />
5497 T basic_ostream<charT,traits>& operator<<(int n);<br />
5498 T basic_ostream<charT,traits>& operator<<(unsigned int n);<br />
5499 T basic_ostream<charT,traits>& operator<<(long n);<br />
5500 T basic_ostream<charT,traits>& operator<<(unsigned long n);<br />
5501 S basic_ostream<charT,traits>& operator<<(float f);<br />
5502 S basic_ostream<charT,traits>& operator<<(double f);<br />
5503 S basic_ostream<charT,traits>& operator<<(long double f);<br />
5504 T basic_ostream<charT,traits>& operator<<(const void* p);<br />
5505 X basic_ostream<charT,traits>& operator<<<br />
5506 (basic_streambuf<char_type,traits>* sb);<br />
5507 // _lib.ostream.unformatted_ Unformatted output:<br />
5508 T basic_ostream<charT,traits>& put(char_type c);<br />
5509 T basic_ostream<charT,traits>& write(const char_type* s, streamsize n);<br />
5510 X basic_ostream<charT,traits>& flush();<br />
5512 // _lib.ostream.seeks_ seeks:<br />
5513 S pos_type tellp();<br />
5514 S basic_ostream<charT,traits>& seekp(pos_type);<br />
5515 S basic_ostream<charT,traits>& seekp(off_type, ios_base::seekdir);<br />
5517 // _lib.ostream.inserters.character_ character inserters<br />
5518 X template<class charT, class traits><br />
5519 basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
5521 X template<class charT, class traits><br />
5522 basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
5524 // specialization<br />
5525 X template<class traits><br />
5526 basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
5528 // signed and unsigned<br />
5529 X template<class traits><br />
5530 basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
5532 X template<class traits><br />
5533 basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
5534 unsigned char)<br />
5535 X template<class charT, class traits><br />
5536 basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
5537 const charT*);<br />
5538 X template<class charT, class traits><br />
5539 basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
5541 // partial specializationss<br />
5542 X template<class traits><br />
5543 basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
5545 // signed and unsigned<br />
5546 X template<class traits><br />
5547 basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
5548 const signed char*);<br />
5549 X template<class traits><br />
5550 basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
5551 const unsigned char*);<br />
5554 27.6.2.3 Class basic_ostream::sentry [lib.ostream::sentry]<br />
5556 template <class charT,class traits = char_traits<charT> ><br />
5557 X class basic_ostream<charT,traits>::sentry {<br />
5558 bool ok_; // exposition only<br />
5560 X explicit sentry(basic_ostream<charT,traits>& os);<br />
5562 X operator bool() const { return ok_; }<br />
5564 X sentry(const sentry&); // not defined<br />
5565 X sentry& operator=(const sentry&); // not defined<br />
5568 27.7 String-based streams [lib.string.streams]<br />
5570 Header <sstream> synopsis<br />
5572 X template <class charT, class traits = char_traits<charT>,<br />
5573 class Allocator = allocator<charT> ><br />
5574 class basic_stringbuf;<br />
5576 T typedef basic_stringbuf<char> stringbuf;<br />
5577 T typedef basic_stringbuf<wchar_t> wstringbuf;<br />
5579 template <class charT, class traits = char_traits<charT>,<br />
5580 class Allocator = allocator<charT> ><br />
5581 X class basic_istringstream;<br />
5583 T typedef basic_istringstream<char> istringstream;<br />
5584 T typedef basic_istringstream<wchar_t> wistringstream;<br />
5586 template <class charT, class traits = char_traits<charT>,<br />
5587 class Allocator = allocator<charT> ><br />
5588 X class basic_ostringstream;<br />
5589 T typedef basic_ostringstream<char> ostringstream;<br />
5590 T typedef basic_ostringstream<wchar_t> wostringstream;<br />
5592 template <class charT, class traits = char_traits<charT>,<br />
5593 class Allocator = allocator<charT> ><br />
5594 X class basic_stringstream;<br />
5595 T typedef basic_stringstream<char> stringstream;<br />
5596 T typedef basic_stringstream<wchar_t> wstringstream;<br />
5598 27.7.1 Template class basic_stringbuf [lib.stringbuf]<br />
5600 template <class charT, class traits = char_traits<charT>,<br />
5601 class Allocator = allocator<charT> ><br />
5602 X class basic_stringbuf : public basic_streambuf<charT,traits> {<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<charT,traits,Allocator>& 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<charT,traits,Allocator> str() const;<br />
5617 S void str(const basic_string<charT,traits,Allocator>& s);<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<charT,traits>* setbuf(charT*, streamsize);<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 />
5635 27.7.2 Template class basic_istringstream [lib.istringstream]<br />
5637 template <class charT, class traits = char_traits<charT>,<br />
5638 class Allocator = allocator<charT> ><br />
5639 X class basic_istringstream : public basic_istream<charT,traits> {<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<charT,traits,Allocator>& str,<br />
5650 ios_base::openmode which = ios_base::in);<br />
5652 // _lib.istringstream.members_ Members:<br />
5653 S basic_stringbuf<charT,traits,Allocator>* rdbuf() const;<br />
5654 S basic_string<charT,traits,Allocator> str() const;<br />
5655 S void str(const basic_string<charT,traits,Allocator>& s);<br />
5657 // basic_stringbuf<charT,traits,Allocator> sb; exposition only<br />
5660 27.7.3 Class basic_ostringstream [lib.ostringstream]<br />
5662 template <class charT, class traits = char_traits<charT>,<br />
5663 class Allocator = allocator<charT> ><br />
5664 X class basic_ostringstream : public basic_ostream<charT,traits> {<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<charT,traits,Allocator>& str,<br />
5676 ios_base::openmode which = ios_base::out);<br />
5677 // _lib.ostringstream.members_ Members:<br />
5678 S basic_stringbuf<charT,traits,Allocator>* rdbuf() const;<br />
5679 S basic_string<charT,traits,Allocator> str() const;<br />
5680 S void str(const basic_string<charT,traits,Allocator>& s);<br />
5684 27.7.4 Template class basic_stringstream [lib.stringstream]<br />
5686 template <class charT, class traits = char_traits<charT>,<br />
5687 class Allocator = allocator<charT> ><br />
5688 X class basic_stringstream<br />
5689 : public basic_iostream<charT,traits> {<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<charT,traits,Allocator>& str,<br />
5701 ios_base::openmode which = ios_base::out|ios_base::in);<br />
5703 S basic_stringbuf<charT,traits,Allocator>* rdbuf() const;<br />
5704 S basic_string<charT,traits,Allocator> str() const;<br />
5705 S void str(const basic_string<charT,traits,Allocator>& str);<br />
5710 27.8.1 File streams [lib.fstreams]<br />
5713 Header <fstream> synopsis<br />
5715 X template <class charT, class traits = char_traits<charT> ><br />
5716 class basic_filebuf;<br />
5717 T typedef basic_filebuf<char> filebuf;<br />
5718 T typedef basic_filebuf<wchar_t> wfilebuf;<br />
5720 X template <class charT, class traits = char_traits<charT> ><br />
5721 class basic_ifstream;<br />
5722 T typedef basic_ifstream<char> ifstream;<br />
5723 T typedef basic_ifstream<wchar_t> wifstream;<br />
5725 X template <class charT, class traits = char_traits<charT> ><br />
5726 class basic_ofstream;<br />
5727 T typedef basic_ofstream<char> ofstream;<br />
5728 T typedef basic_ofstream<wchar_t> wofstream;<br />
5730 X template <class charT, class traits = char_traits<charT> ><br />
5731 class basic_fstream;<br />
5732 T typedef basic_fstream<char> fstream;<br />
5733 T typedef basic_fstream<wchar_t> wfstream;<br />
5735 27.8.1.1 Template class basic_filebuf [lib.filebuf]<br />
5737 template <class charT, class traits = char_traits<charT> ><br />
5738 X class basic_filebuf : public basic_streambuf<charT,traits> {<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<charT,traits>* open<br />
5751 (const char* s, ios_base::openmode mode);<br />
5752 X basic_filebuf<charT,traits>* close();<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<charT,traits>*<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& loc);<br />
5773 27.8.1.5 Template class basic_ifstream [lib.ifstream]<br />
5775 template <class charT, class traits = char_traits<charT> ><br />
5776 X class basic_ifstream : public basic_istream<charT,traits> {<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<charT,traits>* 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 />
5795 27.8.1.8 Template class basic_ofstream [lib.ofstream]<br />
5797 template <class charT, class traits = char_traits<charT> ><br />
5798 X class basic_ofstream : public basic_ostream<charT,traits> {<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<charT,traits>* 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 />
5818 27.8.1.11 Template class basic_fstream [lib.fstream]<br />
5820 template <class charT, class traits=char_traits<charT> ><br />
5821 X class basic_fstream<br />
5822 : public basic_iostream<charT,traits> {<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 />
5836 S basic_filebuf<charT,traits>* rdbuf() const;<br />
5837 S bool is_open();<br />
5839 const char* s,<br />
5840 ios_base::openmode mode = ios_base::in|ios_base::out);<br />
5841 S void close();<br />
5846 27.8.2 C Library files [lib.c.files]<br />
5849 Table 13--Header <cstdio> synopsis<br />
5851 X BUFSIZ L_tmpnam SEEK_SET TMP_MAX<br />
5852 X EOF NULL <cstdio> stderr _IOFBF<br />
5853 X FILENAME_MAX SEEK_CUR stdin _IOLBF<br />
5854 X FOPEN_MAX SEEK_END stdout _IONBF<br />
5856 X Types: FILE fpos_t size_t <cstdio><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 />
5869 1.5 Standard C library headers [depr.c.headers]<br />
5871 X <assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h><br />
5872 <ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h><br />
5873 <errno.h> <locale.h> <stdarg.h> <string.h><br />
5874 <float.h> <math.h> <stddef.h> <time.h><br />
5876 1.6 Old iostreams members [depr.ios.members]<br />
5878 [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
5879 namespace std {<br />
5880 class ios_base {<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 />
5891 [Note: these should be #ifdef'd to permit diagnostics if used.]<br />
5892 namespace std {<br />
5893 template<class charT, class traits = char_traits<charT> ><br />
5894 class basic_streambuf {<br />
5896 T void stossc();<br />
5897 // remainder unchanged<br />
5901 8 An implementation may provide the following member functions that<br />
5902 overload signatures specified in clause _lib.iostreams_:<br />
5904 [Note: the following overloads should be #ifdef'd to permit<br />
5905 diagnostics to be emitted, by default, if used.]<br />
5907 template<class charT, class Traits> class basic_ios {<br />
5909 M void clear(io_state state);<br />
5910 M void setstate(io_state state);<br />
5911 // remainder unchanged<br />
5913 class ios_base {<br />
5915 M void exceptions(io_state);<br />
5916 // remainder unchanged<br />
5918 template<class charT, class traits = char_traits<charT> ><br />
5919 class basic_streambuf {<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 />
5927 template <class charT, class traits = char_traits<charT> ><br />
5928 class basic_filebuf : public basic_streambuf<charT,traits> {<br />
5930 M basic_filebuf<charT,traits>* open<br />
5931 (const char* s, ios_base::open_mode mode);<br />
5932 // remainder unchanged<br />
5934 template <class charT, class traits = char_traits<charT> ><br />
5935 class basic_ifstream : public basic_istream<charT,traits> {<br />
5937 M void open(const char* s, ios_base::open_mode mode = in);<br />
5938 // remainder unchanged<br />
5940 template <class charT, class traits = char_traits<charT> ><br />
5941 class basic_ofstream : public basic_ostream<charT,traits> {<br />
5943 M void open(const char* s, ios_base::open_mode mode = out | trunc);<br />
5944 // remainder unchanged<br />
5950 1.7.1 Class strstreambuf [depr.strstreambuf]<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 />
5955 M class strstreambuf : public basic_streambuf<char> {<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 />
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<char>* setbuf(char* s, streamsize n);<br />
5983 1.7.4 Class strstream [depr.strstream]<br />
5985 M class strstream<br />
5986 : public basic_iostream<char> {<br />
5989 M typedef char char_type;<br />
5990 M typedef typename char_traits<char>::int_type int_type<br />
5991 M typedef typename char_traits<char>::pos_type pos_type;<br />
5992 M typedef typename char_traits<char>::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 />
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 />
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>
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.
6019 For each entry, we give the section number of the standard, when
6020 applicable. This list is probably incomplet and inkorrekt.
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.
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"><stdexcept></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
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<T></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
6098 In this implementation the header names are prefixed by
6099 <code class="code">tr1/</code>, for instance <code class="code"><tr1/functional></code>,
6100 <code class="code"><tr1/memory></code>, and so on.
6102 This page describes the TR1 support in mainline GCC SVN, not in any particular
6104 </p><div class="table"><a id="id438495"></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"><functional></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"><memory></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"><functional> 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"><type_traits></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"><random></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"><cmath></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"><math.h></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"><tuple></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"><utility></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"><array></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"><functional></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"><unordered_set></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"><unordered_map></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"><regex></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"><complex></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"><ccomplex></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"><complex.h></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"><cctype></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"><ctype.h></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"><cfenv></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"><fenv.h></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"><cfloat></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"><float.h></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"><ios></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"><cinttypes></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"><inttypes.h></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"><climits></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"><limits.h></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"><locale></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"><cmath></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"><math.h></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"><cstdarg></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"><stdarg.h></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"><cstdbool></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"><stdbool.h></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"><cstdint></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"><stdint.h></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"><cstdio></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"><stdio.h></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"><cstdlib></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"><stdlib.h></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"><ctgmath></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"><tgmath.h></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"><ctime></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"><cwchar></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"><wchar.h></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"><cwctype></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"><wctype.h></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>
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++
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.
6121 This page describes the C++0x support in mainline GCC SVN, not in any
6123 </p><div class="table"><a id="id563872"></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"><tuple></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"><type_traits></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"><functional></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"><memory></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"><array></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"><random></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"><regex></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"><complex></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"><ccomplex></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"><complex.h></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"><cctype></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"><ctype.h></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"><cfenv></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"><fenv.h></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"><cfloat></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"><float.h></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"><ios></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"><cinttypes></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"><inttypes.h></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"><climits></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"><limits.h></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"><locale></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"><cmath></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"><math.h></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"><cstdarg></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"><stdarg.h></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"><cstdbool></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"><stdbool.h></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"><cstdint></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"><stdint.h></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"><cstdio></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"><stdio.h></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"><cstdlib></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"><stdlib.h></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"><ctgmath></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"><tgmath.h></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"><ctime></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"><cwchar></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"><wchar.h></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"><cwctype></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"><wctype.h></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>
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>