
2009-03-17 Benjamin Kosnik <bkoz@redhat.com> * doc/xml/manual/appendix_contributing.xml: Add docbook style sheet version information. Table-ize docbook element examples. * doc/xml/manual/using.xml: Human-readable header markup. Alphabetized. Add new headers. * doc/html: Regenerate. From-SVN: r144923
6131 lines
487 KiB
HTML
6131 lines
487 KiB
HTML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<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.74.0" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" 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 />
|
||
Completion Checklist for the Standard C++ Library<br />
|
||
Updated: 2003-04-25<br />
|
||
<br />
|
||
Status Code Legend:<br />
|
||
M - Missing<br />
|
||
S - Present as stub.<br />
|
||
X - Partially implemented, or buggy.<br />
|
||
T - Implemented, pending test/inspection.<br />
|
||
V - Verified to pass all available test suites.<br />
|
||
Q - Qualified by inspection for non-testable correctness.<br />
|
||
P - Portability verified.<br />
|
||
C - Certified.<br />
|
||
<br />
|
||
Lexical notes:<br />
|
||
Only status codes appear in column 0. Notes relating to conformance<br />
|
||
issues appear [in brackets].<br />
|
||
<br />
|
||
Note that this checklist does not (yet) include all emendations<br />
|
||
recommended by the ISO Library Working Group:<br />
|
||
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html<br />
|
||
<br />
|
||
Detailed explanation of status codes:<br />
|
||
<br />
|
||
M - Missing: The name is not visible to programs that include<br />
|
||
the specified header, either at compile or link stage.<br />
|
||
<br />
|
||
S - Present as stub: A program can use the name, but no implementation<br />
|
||
is provided. Programs that use the name link correctly, but<br />
|
||
cannot usefully be run.<br />
|
||
<br />
|
||
X - Partially implemented, or buggy: Some implementation has been<br />
|
||
provided, but it is known or believed not to conform fully.<br />
|
||
It may have an incorrect base class, wrong namespace, wrong<br />
|
||
storage class, or simply not fully implement requirements.<br />
|
||
However, it may be sufficiently usable to help test other<br />
|
||
components.<br />
|
||
<br />
|
||
T - Implemented, pending test/inspection: Implementation believed<br />
|
||
to be complete, and informal testing suggests it is ready for<br />
|
||
formal verification.<br />
|
||
<br />
|
||
V - Verified, passes all test suites: Verified to satisfy all<br />
|
||
generically testable conformance requirements.<br />
|
||
<br />
|
||
Q - Qualified by inspection for non-testable correctness:<br />
|
||
Inspected, "implementation-defined" documentation accepted,<br />
|
||
local usability criteria satisfied, formally inspected for<br />
|
||
other untestable conformance. (Untestable requirements<br />
|
||
include exception-safety, thread-safety, worst-case<br />
|
||
complexity, memory cleanliness, usefulness.)<br />
|
||
<br />
|
||
P - Portability verified: Qualified on all primary target platforms.<br />
|
||
<br />
|
||
C - Certified: Formally certified to have passed all tests,<br />
|
||
inspections, qualifications; approved under "signing authority"<br />
|
||
to be used to satisfy contractual guarantees.<br />
|
||
<br />
|
||
----------------------------------------------------------------------<br />
|
||
<algorithm> <iomanip> <list> <ostream> <streambuf><br />
|
||
<bitset> <ios> <locale> <queue> <string><br />
|
||
<complex> <iosfwd> <map> <set> <typeinfo><br />
|
||
X <deque> <iostream> <memory> <sstream> <utility><br />
|
||
<exception> <istream> <new> <stack> <valarray><br />
|
||
<fstream> <iterator> <numeric> <stdexcept> <vector><br />
|
||
<functional> <limits><br />
|
||
<br />
|
||
[C header names must be in std:: to qualify. Related to shadow/ dir.]<br />
|
||
<cassert> <ciso646> <csetjmp> <cstdio> <ctime><br />
|
||
<cctype> <climits> <csignal> <cstdlib> <cwchar><br />
|
||
X <cerrno> <clocale> <cstdarg> <cstring> <cwctype><br />
|
||
<cfloat> <cmath> <cstddef><br />
|
||
<br />
|
||
Macro:<br />
|
||
X errno, declared or defined in <cerrno>.<br />
|
||
<br />
|
||
Macro fn:<br />
|
||
X setjmp(jmp_buf), declared or defined in <csetjmp><br />
|
||
X va_end(va_list), declared or defined in <cstdarg><br />
|
||
<br />
|
||
Types:<br />
|
||
X clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t,<br />
|
||
X ptrdiff_t, sig_atomic_t, size_t, time_t, tm, va_list,<br />
|
||
X wctrans_t, wctype_t, and wint_t.<br />
|
||
<br />
|
||
1 Which of the functions in the C++ Standard Library are not reentrant<br />
|
||
subroutines is implementation-defined.<br />
|
||
<br />
|
||
18.1 Types [lib.support.types]<br />
|
||
X <cstddef><br />
|
||
X NULL<br />
|
||
X offsetof<br />
|
||
X ptrdiff_t<br />
|
||
X size_t<br />
|
||
<br />
|
||
18.2 Implementation properties [lib.support.limits]<br />
|
||
<br />
|
||
<limits>, <climits>, and <cfloat><br />
|
||
<br />
|
||
18.2.1 Numeric limits [lib.limits]<br />
|
||
<br />
|
||
X template<class T> class numeric_limits;<br />
|
||
<br />
|
||
T enum float_round_style;<br />
|
||
T enum float_denorm_style;<br />
|
||
<br />
|
||
T template<> class numeric_limits<bool>;<br />
|
||
<br />
|
||
T template<> class numeric_limits<char>;<br />
|
||
T template<> class numeric_limits<signed char>;<br />
|
||
T template<> class numeric_limits<unsigned char>;<br />
|
||
T template<> class numeric_limits<wchar_t>;<br />
|
||
<br />
|
||
T template<> class numeric_limits<short>;<br />
|
||
T template<> class numeric_limits<int>;<br />
|
||
T template<> class numeric_limits<long>;<br />
|
||
T template<> class numeric_limits<unsigned short>;<br />
|
||
T template<> class numeric_limits<unsigned int>;<br />
|
||
T template<> class numeric_limits<unsigned long>;<br />
|
||
<br />
|
||
X template<> class numeric_limits<float>;<br />
|
||
X template<> class numeric_limits<double>;<br />
|
||
X template<> class numeric_limits<long double>;<br />
|
||
<br />
|
||
18.2.1.1 Template class numeric_limits [lib.numeric.limits]<br />
|
||
T template<class T> class numeric_limits {<br />
|
||
public:<br />
|
||
T static const bool is_specialized = false;<br />
|
||
T static T min() throw();<br />
|
||
T static T max() throw();<br />
|
||
T static const int digits = 0;<br />
|
||
T static const int digits10 = 0;<br />
|
||
T static const bool is_signed = false;<br />
|
||
T static const bool is_integer = false;<br />
|
||
T static const bool is_exact = false;<br />
|
||
T static const int radix = 0;<br />
|
||
T static T epsilon() throw();<br />
|
||
T static T round_error() throw();<br />
|
||
<br />
|
||
T static const int min_exponent = 0;<br />
|
||
T static const int min_exponent10 = 0;<br />
|
||
T static const int max_exponent = 0;<br />
|
||
T static const int max_exponent10 = 0;<br />
|
||
<br />
|
||
T static const bool has_infinity = false;<br />
|
||
T static const bool has_quiet_NaN = false;<br />
|
||
T static const bool has_signaling_NaN = false;<br />
|
||
T static const float_denorm_style has_denorm = denorm_absent;<br />
|
||
T static const bool has_denorm_loss = false;<br />
|
||
T static T infinity() throw();<br />
|
||
T static T quiet_NaN() throw();<br />
|
||
T static T signaling_NaN() throw();<br />
|
||
T static T denorm_min() throw();<br />
|
||
<br />
|
||
T static const bool is_iec559 = false;<br />
|
||
T static const bool is_bounded = false;<br />
|
||
T static const bool is_modulo = false;<br />
|
||
<br />
|
||
T static const bool traps = false;<br />
|
||
T static const bool tinyness_before = false;<br />
|
||
T static const float_round_style round_style = round_toward_zero;<br />
|
||
};<br />
|
||
<br />
|
||
18.2.1.3 Type float_round_style [lib.round.style]<br />
|
||
<br />
|
||
T enum float_round_style {<br />
|
||
T round_indeterminate = -1,<br />
|
||
T round_toward_zero = 0,<br />
|
||
T round_to_nearest = 1,<br />
|
||
T round_toward_infinity = 2,<br />
|
||
T round_toward_neg_infinity = 3<br />
|
||
};<br />
|
||
<br />
|
||
18.2.1.4 Type float_denorm_style [lib.denorm.style]<br />
|
||
<br />
|
||
T enum float_denorm_style {<br />
|
||
T denorm_indeterminate = -1;<br />
|
||
T denorm_absent = 0;<br />
|
||
T denorm present = 1;<br />
|
||
};<br />
|
||
<br />
|
||
18.2.1.5 numeric_limits specializations [lib.numeric.special]<br />
|
||
<br />
|
||
[Note: see Note at 18.2.1. ]<br />
|
||
<br />
|
||
18.2.2 C Library [lib.c.limits]<br />
|
||
<br />
|
||
1 Header <climits> (Table 3):<br />
|
||
CHAR_BIT INT_MAX LONG_MIN SCHAR_MIN UCHAR_MAX USHRT_MAX<br />
|
||
X CHAR_MAX INT_MIN MB_LEN_MAX SHRT_MAX UINT_MAX<br />
|
||
CHAR_MIN LONG_MAX SCHAR_MAX SHRT_MIN ULONG_MAX<br />
|
||
<br />
|
||
3 Header <cfloat> (Table 4):<br />
|
||
<br />
|
||
DBL_DIG DBL_MIN_EXP FLT_MIN_10_EXP LDBL_MAX_10_EXP<br />
|
||
DBL_EPSILON FLT_DIG FLT_MIN_EXP LDBL_MAX_EXP<br />
|
||
DBL_MANT_DIG FLT_EPSILON FLT_RADIX LDBL_MIN<br />
|
||
X DBL_MAX FLT_MANT_DIG FLT_ROUNDS LDBL_MIN_10_EXP<br />
|
||
DBL_MAX_10_EXP FLT_MAX LDBL_DIG LDBL_MIN_EXP<br />
|
||
DBL_MAX_EXP FLT_MAX_10_EXP LDBL_EPSILON<br />
|
||
DBL_MIN FLT_MAX_EXP LDBL_MANT_DIG<br />
|
||
DBL_MIN_10_EXP FLT_MIN LDBL_MAX<br />
|
||
<br />
|
||
<br />
|
||
1 Header <cstdlib> (partial), Table 5:<br />
|
||
X EXIT_FAILURE EXIT_SUCCESS<br />
|
||
abort atexit exit<br />
|
||
<br />
|
||
S abort(void)<br />
|
||
S extern "C" int atexit(void (*f)(void))<br />
|
||
S extern "C++" int atexit(void (*f)(void))<br />
|
||
S exit(int status)<br />
|
||
<br />
|
||
18.4 Dynamic memory management [lib.support.dynamic]<br />
|
||
<br />
|
||
Header <new> synopsis<br />
|
||
<br />
|
||
T class bad_alloc;<br />
|
||
T struct nothrow_t {};<br />
|
||
T extern const nothrow_t nothrow;<br />
|
||
T typedef void (*new_handler)();<br />
|
||
T new_handler set_new_handler(new_handler new_p) throw();<br />
|
||
<br />
|
||
T void* operator new(std::size_t size) throw(std::bad_alloc);<br />
|
||
T void* operator new(std::size_t size, const std::nothrow_t&) throw();<br />
|
||
T void operator delete(void* ptr) throw();<br />
|
||
T void operator delete(void* ptr, const std::nothrow_t&) throw();<br />
|
||
T void* operator new[](std::size_t size) throw(std::bad_alloc);<br />
|
||
T void* operator new[](std::size_t size, const std::nothrow_t&) throw();<br />
|
||
T void operator delete[](void* ptr) throw();<br />
|
||
T void operator delete[](void* ptr, const std::nothrow_t&) throw();<br />
|
||
T void* operator new (std::size_t size, void* ptr) throw();<br />
|
||
T void* operator new[](std::size_t size, void* ptr) throw();<br />
|
||
T void operator delete (void* ptr, void*) throw();<br />
|
||
T void operator delete[](void* ptr, void*) throw();<br />
|
||
<br />
|
||
18.4.2.1 Class bad_alloc [lib.bad.alloc]<br />
|
||
<br />
|
||
T class bad_alloc : public exception {<br />
|
||
public:<br />
|
||
T bad_alloc() throw();<br />
|
||
T bad_alloc(const bad_alloc&) throw();<br />
|
||
T bad_alloc& operator=(const bad_alloc&) throw();<br />
|
||
T virtual ~bad_alloc() throw();<br />
|
||
T virtual const char* what() const throw();<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
T new_handler set_new_handler(new_handler new_p) throw();<br />
|
||
<br />
|
||
<br />
|
||
Header <typeinfo> synopsis<br />
|
||
<br />
|
||
T class type_info;<br />
|
||
T class bad_cast;<br />
|
||
T class bad_typeid;<br />
|
||
<br />
|
||
18.5.1 - Class type_info [lib.type.info]<br />
|
||
<br />
|
||
T class type_info {<br />
|
||
public:<br />
|
||
T virtual ~type_info();<br />
|
||
T bool operator==(const type_info& rhs) const;<br />
|
||
T bool operator!=(const type_info& rhs) const;<br />
|
||
T bool before(const type_info& rhs) const;<br />
|
||
T const char* name() const;<br />
|
||
private:<br />
|
||
T type_info(const type_info& rhs);<br />
|
||
T type_info& operator=(const type_info& rhs);<br />
|
||
};<br />
|
||
<br />
|
||
18.5.2 - Class bad_cast [lib.bad.cast]<br />
|
||
<br />
|
||
T bad_cast() throw();<br />
|
||
T virtual const char* bad_cast::what() const throw();<br />
|
||
<br />
|
||
18.5.3 Class bad_typeid [lib.bad.typeid]<br />
|
||
<br />
|
||
T class bad_typeid : public exception {<br />
|
||
public:<br />
|
||
T bad_typeid() throw();<br />
|
||
T bad_typeid(const bad_typeid&) throw();<br />
|
||
T bad_typeid& operator=(const bad_typeid&) throw();<br />
|
||
T virtual ~bad_typeid() throw();<br />
|
||
T virtual const char* what() const throw();<br />
|
||
};<br />
|
||
<br />
|
||
18.6 Exception handling [lib.support.exception]<br />
|
||
<br />
|
||
T Header <exception> synopsis<br />
|
||
<br />
|
||
T class exception;<br />
|
||
T class bad_exception;<br />
|
||
<br />
|
||
T typedef void (*unexpected_handler)();<br />
|
||
T unexpected_handler set_unexpected(unexpected_handler f) throw();<br />
|
||
T void unexpected();<br />
|
||
T typedef void (*terminate_handler)();<br />
|
||
T terminate_handler set_terminate(terminate_handler f) throw();<br />
|
||
T void terminate();<br />
|
||
T bool uncaught_exception();<br />
|
||
<br />
|
||
18.6.1 Class exception [lib.exception]<br />
|
||
<br />
|
||
T class exception {<br />
|
||
public:<br />
|
||
T exception() throw();<br />
|
||
T exception(const exception&) throw();<br />
|
||
T exception& operator=(const exception&) throw();<br />
|
||
T virtual ~exception() throw();<br />
|
||
T virtual const char* what() const throw();<br />
|
||
};<br />
|
||
<br />
|
||
18.6.2.1 Class bad_exception [lib.bad.exception]<br />
|
||
T class bad_exception : public exception {<br />
|
||
public:<br />
|
||
T bad_exception() throw();<br />
|
||
T bad_exception(const bad_exception&) throw();<br />
|
||
T bad_exception& operator=(const bad_exception&) throw();<br />
|
||
T virtual ~bad_exception() throw();<br />
|
||
T virtual const char* what() const throw();<br />
|
||
};<br />
|
||
<br />
|
||
18.7 Other runtime support [lib.support.runtime]<br />
|
||
<br />
|
||
1 Headers <cstdarg> (variable arguments), <csetjmp> (nonlocal jumps),<br />
|
||
<ctime> (system clock clock(), time()), <csignal> (signal handling),<br />
|
||
and <cstdlib> (runtime environment getenv(), system()).<br />
|
||
<br />
|
||
Table 6--Header <cstdarg> synopsis<br />
|
||
Macros: va_arg va_end va_start<br />
|
||
X Type: va_list<br />
|
||
<br />
|
||
Table 7--Header <csetjmp> synopsis<br />
|
||
<br />
|
||
Macro: setjmp |<br />
|
||
X Type: jmp_buf<br />
|
||
Function: longjmp<br />
|
||
<br />
|
||
Table 8--Header <ctime> synopsis<br />
|
||
<br />
|
||
Macros: CLOCKS_PER_SEC<br />
|
||
X Types: clock_t<br />
|
||
Functions: clock<br />
|
||
<br />
|
||
Table 9--Header <csignal> synopsis<br />
|
||
<br />
|
||
X Macros: SIGABRT SIGILL SIGSEGV SIG_DFL<br />
|
||
SIG_IGN SIGFPE SIGINT SIGTERM SIG_ERR<br />
|
||
Type: sig_atomic_t<br />
|
||
Functions: raise signal<br />
|
||
<br />
|
||
Table 10--Header <cstdlib> synopsis<br />
|
||
<br />
|
||
X Functions: getenv system<br />
|
||
<br />
|
||
19.1 Exception classes [lib.std.exceptions]<br />
|
||
<br />
|
||
Header <stdexcept> synopsis<br />
|
||
<br />
|
||
T class logic_error;<br />
|
||
T class domain_error;<br />
|
||
T class invalid_argument;<br />
|
||
T class length_error;<br />
|
||
T class out_of_range;<br />
|
||
T class runtime_error;<br />
|
||
T class range_error;<br />
|
||
T class overflow_error;<br />
|
||
T class underflow_error;<br />
|
||
<br />
|
||
19.1.1 Class logic_error [lib.logic.error]<br />
|
||
T class logic_error : public exception {<br />
|
||
public:<br />
|
||
T explicit logic_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
19.1.2 Class domain_error [lib.domain.error]<br />
|
||
<br />
|
||
T class domain_error : public logic_error {<br />
|
||
public:<br />
|
||
T explicit domain_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
19.1.3 Class invalid_argument [lib.invalid.argument]<br />
|
||
<br />
|
||
T class invalid_argument : public logic_error {<br />
|
||
public:<br />
|
||
T explicit invalid_argument(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
19.1.4 Class length_error [lib.length.error]<br />
|
||
<br />
|
||
T class length_error : public logic_error {<br />
|
||
public:<br />
|
||
T explicit length_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
19.1.5 Class out_of_range [lib.out.of.range]<br />
|
||
<br />
|
||
T class out_of_range : public logic_error {<br />
|
||
public:<br />
|
||
T explicit out_of_range(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
19.1.6 Class runtime_error [lib.runtime.error]<br />
|
||
<br />
|
||
T class runtime_error : public exception {<br />
|
||
public:<br />
|
||
T explicit runtime_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
19.1.7 Class range_error [lib.range.error]<br />
|
||
<br />
|
||
T class range_error : public runtime_error {<br />
|
||
public:<br />
|
||
T explicit range_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
19.1.8 Class overflow_error [lib.overflow.error]<br />
|
||
<br />
|
||
T class overflow_error : public runtime_error {<br />
|
||
public:<br />
|
||
T explicit overflow_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
19.1.9 Class underflow_error [lib.underflow.error]<br />
|
||
<br />
|
||
T class underflow_error : public runtime_error {<br />
|
||
public:<br />
|
||
T explicit underflow_error(const string& what_arg);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
19.2 Assertions [lib.assertions]<br />
|
||
<br />
|
||
Table 2--Header <cassert> synopsis<br />
|
||
<br />
|
||
X Macro: assert<br />
|
||
<br />
|
||
19.3 Error numbers [lib.errno]<br />
|
||
<br />
|
||
Table 3--Header <cerrno> synopsis<br />
|
||
<br />
|
||
X |Macros: EDOM ERANGE errno |<br />
|
||
<br />
|
||
<br />
|
||
20.2 Utility components [lib.utility]<br />
|
||
<br />
|
||
Header <utility> synopsis<br />
|
||
<br />
|
||
// _lib.operators_, operators:<br />
|
||
T namespace rel_ops {<br />
|
||
T template<class T> bool operator!=(const T&, const T&);<br />
|
||
T template<class T> bool operator> (const T&, const T&);<br />
|
||
T template<class T> bool operator<=(const T&, const T&);<br />
|
||
T template<class T> bool operator>=(const T&, const T&);<br />
|
||
}<br />
|
||
// _lib.pairs_, pairs:<br />
|
||
T template <class T1, class T2> struct pair;<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator==(const pair<T1,T2>&, const pair<T1,T2>&);<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator< (const pair<T1,T2>&, const pair<T1,T2>&);<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&);<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator> (const pair<T1,T2>&, const pair<T1,T2>&);<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&);<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&);<br />
|
||
T template <class T1, class T2> pair<T1,T2> make_pair(const T1&, const T2&);<br />
|
||
<br />
|
||
<br />
|
||
20.2.2 Pairs [lib.pairs]<br />
|
||
<br />
|
||
T template <class T1, class T2><br />
|
||
struct pair {<br />
|
||
T typedef T1 first_type;<br />
|
||
T typedef T2 second_type;<br />
|
||
<br />
|
||
T T1 first;<br />
|
||
T T2 second;<br />
|
||
T pair();<br />
|
||
T pair(const T1& x, const T2& y);<br />
|
||
T template<class U, class V> pair(const pair<U, V> &p);<br />
|
||
};<br />
|
||
<br />
|
||
20.3 Function objects [lib.function.objects]<br />
|
||
<br />
|
||
Header <functional> synopsis<br />
|
||
<br />
|
||
// _lib.base_, base:<br />
|
||
V template <class Arg, class Result> struct unary_function;<br />
|
||
V template <class Arg1, class Arg2, class Result> struct binary_function;<br />
|
||
<br />
|
||
// _lib.arithmetic.operations_, arithmetic operations:<br />
|
||
V template <class T> struct plus;<br />
|
||
V template <class T> struct minus;<br />
|
||
V template <class T> struct multiplies;<br />
|
||
V template <class T> struct divides;<br />
|
||
V template <class T> struct modulus;<br />
|
||
V template <class T> struct negate;<br />
|
||
// _lib.comparisons_, comparisons:<br />
|
||
V template <class T> struct equal_to;<br />
|
||
V template <class T> struct not_equal_to;<br />
|
||
V template <class T> struct greater;<br />
|
||
V template <class T> struct less;<br />
|
||
V template <class T> struct greater_equal;<br />
|
||
V template <class T> struct less_equal;<br />
|
||
// _lib.logical.operations_, logical operations:<br />
|
||
V template <class T> struct logical_and;<br />
|
||
V template <class T> struct logical_or;<br />
|
||
V template <class T> struct logical_not;<br />
|
||
// _lib.negators_, negators:<br />
|
||
template <class Predicate> struct unary_negate;<br />
|
||
V template <class Predicate><br />
|
||
unary_negate<Predicate> not1(const Predicate&);<br />
|
||
V template <class Predicate> struct binary_negate;<br />
|
||
V template <class Predicate><br />
|
||
binary_negate<Predicate> not2(const Predicate&);<br />
|
||
// _lib.binders_, binders:<br />
|
||
V template <class Operation> class binder1st;<br />
|
||
V template <class Operation, class T><br />
|
||
binder1st<Operation> bind1st(const Operation&, const T&);<br />
|
||
V template <class Operation> class binder2nd;<br />
|
||
V template <class Operation, class T><br />
|
||
binder2nd<Operation> bind2nd(const Operation&, const T&);<br />
|
||
// _lib.function.pointer.adaptors_, adaptors:<br />
|
||
V template <class Arg, class Result> class pointer_to_unary_function;<br />
|
||
V template <class Arg, class Result><br />
|
||
pointer_to_unary_function<Arg,Result> ptr_fun(Result (*)(Arg));<br />
|
||
V template <class Arg1, class Arg2, class Result><br />
|
||
class pointer_to_binary_function;<br />
|
||
V template <class Arg1, class Arg2, class Result><br />
|
||
pointer_to_binary_function<Arg1,Arg2,Result><br />
|
||
ptr_fun(Result (*)(Arg1,Arg2));<br />
|
||
<br />
|
||
// _lib.member.pointer.adaptors_, adaptors:<br />
|
||
V template<class S, class T> class mem_fun_t;<br />
|
||
V template<class S, class T, class A> class mem_fun1_t;<br />
|
||
V template<class S, class T><br />
|
||
mem_fun_t<S,T> mem_fun(S (T::*f)());<br />
|
||
V template<class S, class T, class A><br />
|
||
mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A));<br />
|
||
V template<class S, class T> class mem_fun_ref_t;<br />
|
||
V template<class S, class T, class A> class mem_fun1_ref_t;<br />
|
||
V template<class S, class T><br />
|
||
mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)());<br />
|
||
V template<class S, class T, class A><br />
|
||
mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A));<br />
|
||
<br />
|
||
V template <class S, class T> class const_mem_fun_t;<br />
|
||
V template <class S, class T, class A> class const_mem_fun1_t;<br />
|
||
V template <class S, class T><br />
|
||
const_mem_fun_t<S,T> mem_fun(S (T::*f)() const);<br />
|
||
V template <class S, class T, class A><br />
|
||
const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const);<br />
|
||
V template <class S, class T> class const_mem_fun_ref_t;<br />
|
||
V template <class S, class T, class A> class const_mem_fun1_ref_t;<br />
|
||
V template <class S, class T><br />
|
||
const_mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)() const);<br />
|
||
V template <class S, class T, class A><br />
|
||
const_mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A) const);<br />
|
||
}<br />
|
||
<br />
|
||
20.3.1 Base [lib.base]<br />
|
||
<br />
|
||
V template <class Arg, class Result><br />
|
||
struct unary_function {<br />
|
||
V typedef Arg argument_type;<br />
|
||
V typedef Result result_type;<br />
|
||
};<br />
|
||
V template <class Arg1, class Arg2, class Result><br />
|
||
struct binary_function {<br />
|
||
V typedef Arg1 first_argument_type;<br />
|
||
V typedef Arg2 second_argument_type;<br />
|
||
V typedef Result result_type;<br />
|
||
};<br />
|
||
<br />
|
||
20.3.2 Arithmetic operations [lib.arithmetic.operations]<br />
|
||
<br />
|
||
T template <class T> struct plus : binary_function<T,T,T> {<br />
|
||
V T operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct minus : binary_function<T,T,T> {<br />
|
||
V T operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct multiplies : binary_function<T,T,T> {<br />
|
||
V T operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct divides : binary_function<T,T,T> {<br />
|
||
V T operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct modulus : binary_function<T,T,T> {<br />
|
||
V T operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct negate : unary_function<T,T> {<br />
|
||
V T operator()(const T& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
20.3.3 Comparisons [lib.comparisons]<br />
|
||
<br />
|
||
T template <class T> struct equal_to : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct not_equal_to : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct greater : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct less : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct greater_equal : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct less_equal : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
20.3.4 Logical operations [lib.logical.operations]<br />
|
||
<br />
|
||
T template <class T> struct logical_and : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct logical_or : binary_function<T,T,bool> {<br />
|
||
V bool operator()(const T& x, const T& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> struct logical_not : unary_function<T,bool> {<br />
|
||
V bool operator()(const T& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
20.3.5 Negators [lib.negators]<br />
|
||
<br />
|
||
T template <class Predicate><br />
|
||
class unary_negate<br />
|
||
: public unary_function<typename Predicate::argument_type,bool> {<br />
|
||
public:<br />
|
||
T explicit unary_negate(const Predicate& pred);<br />
|
||
V bool operator()(const typename Predicate::argument_type& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class Predicate><br />
|
||
class binary_negate<br />
|
||
: public binary_function<typename Predicate::first_argument_type,<br />
|
||
typename Predicate::second_argument_type, bool> {<br />
|
||
public:<br />
|
||
T explicit binary_negate(const Predicate& pred);<br />
|
||
V bool operator()(const typename Predicate::first_argument_type& x,<br />
|
||
const typename Predicate::second_argument_type& y) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
20.3.6 Binders [lib.binders]<br />
|
||
<br />
|
||
20.3.6.1 Template class binder1st [lib.binder.1st]<br />
|
||
T template <class Operation><br />
|
||
class binder1st<br />
|
||
: public unary_function<typename Operation::second_argument_type,<br />
|
||
typename Operation::result_type> {<br />
|
||
protected:<br />
|
||
T Operation op;<br />
|
||
T typename Operation::first_argument_type value;<br />
|
||
public:<br />
|
||
V binder1st(const Operation& x,<br />
|
||
const typename Operation::first_argument_type& y);<br />
|
||
V typename Operation::result_type<br />
|
||
operator()(const typename Operation::second_argument_type& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
20.3.6.2 bind1st [lib.bind.1st]<br />
|
||
<br />
|
||
V template <class Operation, class T><br />
|
||
binder1st<Operation> bind1st(const Operation& op, const T& x);<br />
|
||
<br />
|
||
20.3.6.3 Template class binder2nd [lib.binder.2nd]<br />
|
||
T template <class Operation><br />
|
||
class binder2nd<br />
|
||
: public unary_function<typename Operation::first_argument_type,<br />
|
||
typename Operation::result_type> {<br />
|
||
protected:<br />
|
||
T Operation op;<br />
|
||
T typename Operation::second_argument_type value;<br />
|
||
public:<br />
|
||
V binder2nd(const Operation& x,<br />
|
||
const typename Operation::second_argument_type& y);<br />
|
||
V typename Operation::result_type<br />
|
||
operator()(const typename Operation::first_argument_type& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
20.3.6.4 bind2nd [lib.bind.2nd]<br />
|
||
<br />
|
||
T template <class Operation, class T><br />
|
||
binder2nd<Operation> bind2nd(const Operation& op, const T& x);<br />
|
||
<br />
|
||
<br />
|
||
20.3.7 Adaptors for pointers to [lib.function.pointer.adaptors]<br />
|
||
functions<br />
|
||
<br />
|
||
1 To allow pointers to (unary and binary) functions to work with func-<br />
|
||
tion adaptors the library provides:<br />
|
||
<br />
|
||
T template <class Arg, class Result><br />
|
||
class pointer_to_unary_function : public unary_function<Arg, Result> {<br />
|
||
public:<br />
|
||
T explicit pointer_to_unary_function(Result (*f)(Arg));<br />
|
||
V Result operator()(Arg x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class Arg, class Result><br />
|
||
pointer_to_unary_function<Arg, Result> ptr_fun(Result (*f)(Arg));<br />
|
||
<br />
|
||
T template <class Arg1, class Arg2, class Result><br />
|
||
class pointer_to_binary_function :<br />
|
||
public binary_function<Arg1,Arg2,Result> {<br />
|
||
public:<br />
|
||
T explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));<br />
|
||
V Result operator()(Arg1 x, Arg2 y) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
20.3.8 Adaptors for pointers to [lib.member.pointer.adaptors]<br />
|
||
members<br />
|
||
<br />
|
||
T template <class S, class T> class mem_fun_t<br />
|
||
: public unary_function<T*, S> {<br />
|
||
public:<br />
|
||
T explicit mem_fun_t(S (T::*p)());<br />
|
||
V S operator()(T* p) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class S, class T, class A> class mem_fun1_t<br />
|
||
: public binary_function<T*, A, S> {<br />
|
||
public:<br />
|
||
T explicit mem_fun1_t(S (T::*p)(A));<br />
|
||
V S operator()(T* p, A x) const;<br />
|
||
};<br />
|
||
<br />
|
||
V template<class S, class T> mem_fun_t<S,T><br />
|
||
mem_fun(S (T::*f)());<br />
|
||
V template<class S, class T, class A> mem_fun1_t<S,T,A><br />
|
||
mem_fun(S (T::*f)(A));<br />
|
||
<br />
|
||
T template <class S, class T> class mem_fun_ref_t<br />
|
||
: public unary_function<T, S> {<br />
|
||
public:<br />
|
||
T explicit mem_fun_ref_t(S (T::*p)());<br />
|
||
V S operator()(T& p) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class S, class T, class A> class mem_fun1_ref_t<br />
|
||
: public binary_function<T, A, S> {<br />
|
||
public:<br />
|
||
T explicit mem_fun1_ref_t(S (T::*p)(A));<br />
|
||
V S operator()(T& p, A x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template<class S, class T> mem_fun_ref_t<S,T><br />
|
||
mem_fun_ref(S (T::*f)());<br />
|
||
<br />
|
||
T template<class S, class T, class A> mem_fun1_ref_t<S,T,A><br />
|
||
mem_fun_ref(S (T::*f)(A));<br />
|
||
<br />
|
||
T template <class S, class T> class const_mem_fun_t<br />
|
||
: public unary_function<T*, S> {<br />
|
||
public:<br />
|
||
T explicit const_mem_fun_t(S (T::*p)() const);<br />
|
||
V S operator()(const T* p) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class S, class T, class A> class const_mem_fun1_t<br />
|
||
: public binary_function<T*, A, S> {<br />
|
||
public:<br />
|
||
T explicit const mem_fun1_t(S (T::*p)(A) const);<br />
|
||
V S operator()(const T* p, A x) const;<br />
|
||
};<br />
|
||
<br />
|
||
V template<class S, class T> const_mem_fun_t<S,T><br />
|
||
mem_fun(S (T::*f)() const);<br />
|
||
V template<class S, class T, class A> const_mem_fun1_t<S,T,A><br />
|
||
mem_fun(S (T::*f)(A) const);<br />
|
||
<br />
|
||
T template <class S, class T> class const_mem_fun_ref_t<br />
|
||
: public unary_function<T, S> {<br />
|
||
public:<br />
|
||
T explicit const_mem_fun_ref_t(S (T::*p)() const);<br />
|
||
V S operator()(const T& p) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class S, class T, class A> class const_mem_fun1_ref_t<br />
|
||
: public binary_function<T, A, S> {<br />
|
||
public:<br />
|
||
T explicit const_mem_fun1_ref_t(S (T::*p)(A) const);<br />
|
||
V S operator()(const T& p, A x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template<class S, class T> const_mem_fun_ref_t<S,T><br />
|
||
mem_fun_ref(S (T::*f)() const);<br />
|
||
<br />
|
||
T template<class S, class T, class A> const_mem_fun1_ref_t<S,T,A><br />
|
||
mem_fun_ref(S (T::*f)(A) const);<br />
|
||
<br />
|
||
20.4 Memory [lib.memory]<br />
|
||
<br />
|
||
Header <memory> synopsis<br />
|
||
<br />
|
||
// _lib.default.allocator_, the default allocator:<br />
|
||
T template <class T> class allocator;<br />
|
||
T template <> class allocator<void>;<br />
|
||
T template <class T, class U><br />
|
||
bool operator==(const allocator<T>&, const allocator<U>&) throw();<br />
|
||
T template <class T, class U><br />
|
||
bool operator!=(const allocator<T>&, const allocator<U>&) throw();<br />
|
||
// _lib.storage.iterator_, raw storage iterator:<br />
|
||
T template <class OutputIterator, class T> class raw_storage_iterator;<br />
|
||
// _lib.temporary.buffer_, temporary buffers:<br />
|
||
T template <class T><br />
|
||
pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n);<br />
|
||
T template <class T><br />
|
||
void return_temporary_buffer(T* p);<br />
|
||
// _lib.specialized.algorithms_, specialized algorithms:<br />
|
||
T template <class InputIterator, class ForwardIterator><br />
|
||
ForwardIterator<br />
|
||
uninitialized_copy(InputIterator first, InputIterator last,<br />
|
||
ForwardIterator result);<br />
|
||
T template <class ForwardIterator, class T><br />
|
||
void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& x);<br />
|
||
T template <class ForwardIterator, class Size, class T><br />
|
||
void uninitialized_fill_n(ForwardIterator first, Size n, const T& x);<br />
|
||
// _lib.auto.ptr_, pointers:<br />
|
||
X template<class X> class auto_ptr;<br />
|
||
}<br />
|
||
<br />
|
||
20.4.1 The default allocator [lib.default.allocator]<br />
|
||
<br />
|
||
T template <class T> class allocator;<br />
|
||
// specialize for void:<br />
|
||
T template <> class allocator<void> {<br />
|
||
public:<br />
|
||
T typedef void* pointer;<br />
|
||
T typedef const void* const_pointer;<br />
|
||
// reference-to-void members are impossible.<br />
|
||
T typedef void value_type;<br />
|
||
T template <class U> struct rebind { typedef allocator<U> other; };<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T> class allocator {<br />
|
||
public:<br />
|
||
T typedef size_t size_type;<br />
|
||
T typedef ptrdiff_t difference_type;<br />
|
||
T typedef T* pointer;<br />
|
||
T typedef const T* const_pointer;<br />
|
||
T typedef T& reference;<br />
|
||
T typedef const T& const_reference;<br />
|
||
T typedef T value_type;<br />
|
||
T template <class U> struct rebind { typedef allocator<U> other; };<br />
|
||
T allocator() throw();<br />
|
||
T allocator(const allocator&) throw();<br />
|
||
T template <class U> allocator(const allocator<U>&) throw();<br />
|
||
T ~allocator() throw();<br />
|
||
T pointer address(reference x) const;<br />
|
||
T const_pointer address(const_reference x) const;<br />
|
||
T pointer allocate(<br />
|
||
size_type, allocator<void>::const_pointer hint = 0);<br />
|
||
T void deallocate(pointer p, size_type n);<br />
|
||
T size_type max_size() const throw();<br />
|
||
T void construct(pointer p, const T& val);<br />
|
||
T void destroy(pointer p);<br />
|
||
};<br />
|
||
<br />
|
||
20.4.1.2 allocator globals [lib.allocator.globals]<br />
|
||
<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator==(const allocator<T1>&, const allocator<T2>&) throw();<br />
|
||
T template <class T1, class T2><br />
|
||
bool operator!=(const allocator<T1>&, const allocator<T2>&) throw();<br />
|
||
<br />
|
||
20.4.2 Raw storage iterator [lib.storage.iterator]<br />
|
||
<br />
|
||
T template <class OutputIterator, class T><br />
|
||
class raw_storage_iterator<br />
|
||
: public iterator<output_iterator_tag,void,void,void,void> {<br />
|
||
public:<br />
|
||
T explicit raw_storage_iterator(OutputIterator x);<br />
|
||
T raw_storage_iterator<OutputIterator,T>& operator*();<br />
|
||
T raw_storage_iterator<OutputIterator,T>& operator=(const T& element);<br />
|
||
T raw_storage_iterator<OutputIterator,T>& operator++();<br />
|
||
T raw_storage_iterator<OutputIterator,T> operator++(int);<br />
|
||
};<br />
|
||
<br />
|
||
20.4.3 Temporary buffers [lib.temporary.buffer]<br />
|
||
<br />
|
||
T template <class T><br />
|
||
pair<T*, ptrdiff_t> get_temporary_buffer(ptrdiff_t n);<br />
|
||
<br />
|
||
T template <class T> void return_temporary_buffer(T* p);<br />
|
||
<br />
|
||
20.4.4 Specialized algorithms [lib.specialized.algorithms]<br />
|
||
<br />
|
||
20.4.4.1 uninitialized_copy [lib.uninitialized.copy]<br />
|
||
<br />
|
||
V template <class InputIterator, class ForwardIterator><br />
|
||
ForwardIterator<br />
|
||
uninitialized_copy(InputIterator first, InputIterator last,<br />
|
||
ForwardIterator result);<br />
|
||
<br />
|
||
20.4.4.2 uninitialized_fill [lib.uninitialized.fill]<br />
|
||
<br />
|
||
V template <class ForwardIterator, class T><br />
|
||
void uninitialized_fill(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& x);<br />
|
||
<br />
|
||
20.4.4.3 uninitialized_fill_n [lib.uninitialized.fill.n]<br />
|
||
<br />
|
||
V template <class ForwardIterator, class Size, class T><br />
|
||
void uninitialized_fill_n(ForwardIterator first, Size n, const T& x);<br />
|
||
<br />
|
||
20.4.5 Template class auto_ptr [lib.auto.ptr]<br />
|
||
<br />
|
||
X template<class X> class auto_ptr {<br />
|
||
template <class Y> struct auto_ptr_ref {};<br />
|
||
public:<br />
|
||
T typedef X element_type;<br />
|
||
// _lib.auto.ptr.cons_ construct/copy/destroy:<br />
|
||
T explicit auto_ptr(X* p =0) throw();<br />
|
||
T auto_ptr(auto_ptr&) throw();<br />
|
||
T template<class Y> auto_ptr(auto_ptr<Y>&) throw();<br />
|
||
T auto_ptr& operator=(auto_ptr&) throw();<br />
|
||
T template<class Y> auto_ptr& operator=(auto_ptr<Y>&) throw();<br />
|
||
T ~auto_ptr() throw();<br />
|
||
// _lib.auto.ptr.members_ members:<br />
|
||
T X& operator*() const throw();<br />
|
||
T X* operator->() const throw();<br />
|
||
T X* get() const throw();<br />
|
||
T X* release() throw();<br />
|
||
T void reset(X* p =0) throw();<br />
|
||
<br />
|
||
// _lib.auto.ptr.conv_ conversions:<br />
|
||
X auto_ptr(auto_ptr_ref<X>) throw();<br />
|
||
X template<class Y> operator auto_ptr_ref<Y>() throw();<br />
|
||
X template<class Y> operator auto_ptr<Y>() throw();<br />
|
||
};<br />
|
||
<br />
|
||
20.4.6 C Library [lib.c.malloc]<br />
|
||
<br />
|
||
Table 7--Header <cstdlib> synopsis<br />
|
||
<br />
|
||
X Functions: calloc malloc<br />
|
||
free realloc<br />
|
||
<br />
|
||
<br />
|
||
Table 8--Header <cstring> synopsis<br />
|
||
<br />
|
||
X Macro: NULL<br />
|
||
X Type: size_t<br />
|
||
X Functions: memchr memcmp<br />
|
||
X memcpy memmove memset<br />
|
||
<br />
|
||
Table 9--Header <ctime> synopsis<br />
|
||
<br />
|
||
X Macros: NULL<br />
|
||
X Types: size_t clock_t time_t<br />
|
||
X Struct: tm<br />
|
||
Functions:<br />
|
||
X asctime clock difftime localtime strftime<br />
|
||
X ctime gmtime mktime time<br />
|
||
<br />
|
||
21.1.1 Character traits requirements [lib.char.traits.require]<br />
|
||
<br />
|
||
2 The struct template<br />
|
||
T template<class charT> struct char_traits;<br />
|
||
shall be provided in the header <string> as a basis for explicit spe-<br />
|
||
cializations.<br />
|
||
<br />
|
||
<br />
|
||
21.1.3.1 struct [lib.char.traits.specializations.char]<br />
|
||
char_traits<char><br />
|
||
<br />
|
||
T template<><br />
|
||
struct char_traits<char> {<br />
|
||
T typedef char char_type;<br />
|
||
T typedef int int_type;<br />
|
||
T typedef streamoff off_type;<br />
|
||
T typedef streampos pos_type;<br />
|
||
T typedef mbstate_t state_type;<br />
|
||
<br />
|
||
T static void assign(char_type& c1, const char_type& c2);<br />
|
||
T static bool eq(const char_type& c1, const char_type& c2);<br />
|
||
T static bool lt(const char_type& c1, const char_type& c2);<br />
|
||
<br />
|
||
T static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
|
||
T static size_t length(const char_type* s);<br />
|
||
T static const char_type* find(const char_type* s, size_t n,<br />
|
||
const char_type& a);<br />
|
||
T static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
|
||
T static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
|
||
T static char_type* assign(char_type* s, size_t n, char_type a);<br />
|
||
<br />
|
||
T static int_type not_eof(const int_type& c);<br />
|
||
T static char_type to_char_type(const int_type& c);<br />
|
||
T static int_type to_int_type(const char_type& c);<br />
|
||
T static bool eq_int_type(const int_type& c1, const int_type& c2);<br />
|
||
T static int_type eof();<br />
|
||
};<br />
|
||
<br />
|
||
21.1.3.2 struct [lib.char.traits.specializations.wchar.t]<br />
|
||
char_traits<wchar_t><br />
|
||
<br />
|
||
V template<><br />
|
||
struct char_traits<wchar_t> {<br />
|
||
V typedef wchar_t char_type;<br />
|
||
V typedef wint_t int_type;<br />
|
||
V typedef streamoff off_type;<br />
|
||
V typedef wstreampos pos_type;<br />
|
||
V typedef mbstate_t state_type;<br />
|
||
<br />
|
||
V static void assign(char_type& c1, const char_type& c2);<br />
|
||
V static bool eq(const char_type& c1, const char_type& c2);<br />
|
||
V static bool lt(const char_type& c1, const char_type& c2);<br />
|
||
<br />
|
||
V static int compare(const char_type* s1, const char_type* s2, size_t n);<br />
|
||
V static size_t length(const char_type* s);<br />
|
||
V static const char_type* find(const char_type* s, size_t n,<br />
|
||
const char_type& a);<br />
|
||
V static char_type* move(char_type* s1, const char_type* s2, size_t n);<br />
|
||
V static char_type* copy(char_type* s1, const char_type* s2, size_t n);<br />
|
||
V static char_type* assign(char_type* s, size_t n, char_type a);<br />
|
||
<br />
|
||
V static int_type not_eof(const int_type& c);<br />
|
||
V static char_type to_char_type(const int_type& c);<br />
|
||
V static int_type to_int_type(const char_type& c);<br />
|
||
V static bool eq_int_type(const int_type& c1, const int_type& c2);<br />
|
||
V static int_type eof();<br />
|
||
};<br />
|
||
<br />
|
||
21.2 String classes [lib.string.classes]<br />
|
||
<br />
|
||
// _lib.char.traits_, character traits:<br />
|
||
V template<class charT><br />
|
||
struct char_traits;<br />
|
||
V template <> struct char_traits<char>;<br />
|
||
V template <> struct char_traits<wchar_t>;<br />
|
||
<br />
|
||
// _lib.basic.string_, basic_string:<br />
|
||
V template<class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_string;<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_string<charT,traits,Allocator><br />
|
||
operator+(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_string<charT,traits,Allocator><br />
|
||
operator+(const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_string<charT,traits,Allocator><br />
|
||
operator+(charT lhs, const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_string<charT,traits,Allocator><br />
|
||
operator+(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_string<charT,traits,Allocator><br />
|
||
operator+(const basic_string<charT,traits,Allocator>& lhs, charT rhs);<br />
|
||
<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator==(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator==(const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator==(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator!=(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator!=(const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator!=(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator< (const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator< (const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator< (const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator> (const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator> (const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator> (const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator<=(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator<=(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator<=(const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator>=(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator>=(const basic_string<charT,traits,Allocator>& lhs,<br />
|
||
const charT* rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
bool operator>=(const charT* lhs,<br />
|
||
const basic_string<charT,traits,Allocator>& rhs);<br />
|
||
<br />
|
||
// _lib.string.special_:<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
void swap(basic_string<charT,traits,Allocator>& lhs,<br />
|
||
basic_string<charT,traits,Allocator>& rhs);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_istream<charT,traits>&<br />
|
||
operator>>(basic_istream<charT,traits>& is,<br />
|
||
basic_string<charT,traits,Allocator>& str);<br />
|
||
T template<class charT, class traits, class Allocator><br />
|
||
basic_ostream<charT, traits>&<br />
|
||
operator<<(basic_ostream<charT, traits>& os,<br />
|
||
const basic_string<charT,traits,Allocator>& str);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_istream<charT,traits>&<br />
|
||
getline(basic_istream<charT,traits>& is,<br />
|
||
basic_string<charT,traits,Allocator>& str,<br />
|
||
charT delim);<br />
|
||
V template<class charT, class traits, class Allocator><br />
|
||
basic_istream<charT,traits>&<br />
|
||
getline(basic_istream<charT,traits>& is,<br />
|
||
basic_string<charT,traits,Allocator>& str);<br />
|
||
V typedef basic_string<char> string;<br />
|
||
T typedef basic_string<wchar_t> wstring;<br />
|
||
}<br />
|
||
<br />
|
||
21.3 Template class basic_string [lib.basic.string]<br />
|
||
<br />
|
||
V namespace std {<br />
|
||
template<class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_string {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
typedef traits traits_type;<br />
|
||
typedef typename traits::char_type value_type;<br />
|
||
typedef Allocator allocator_type;<br />
|
||
typedef typename Allocator::size_type size_type;<br />
|
||
typedef typename Allocator::difference_type difference_type;<br />
|
||
typedef typename Allocator::reference reference;<br />
|
||
typedef typename Allocator::const_reference const_reference;<br />
|
||
typedef typename Allocator::pointer pointer;<br />
|
||
typedef typename Allocator::const_pointer const_pointer;<br />
|
||
typedef implementation defined iterator;<br />
|
||
typedef implementation defined const_iterator;<br />
|
||
typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
static const size_type npos = -1;<br />
|
||
<br />
|
||
// _lib.string.cons_ construct/copy/destroy:<br />
|
||
V explicit basic_string(const Allocator& a = Allocator());<br />
|
||
V basic_string(const basic_string& str, size_type pos = 0,<br />
|
||
size_type n = npos, const Allocator& a = Allocator());<br />
|
||
V basic_string(const charT* s,<br />
|
||
size_type n, const Allocator& a = Allocator());<br />
|
||
V basic_string(const charT* s, const Allocator& a = Allocator());<br />
|
||
V basic_string(size_type n, charT c, const Allocator& a = Allocator());<br />
|
||
V template<class InputIterator><br />
|
||
basic_string(InputIterator begin, InputIterator end,<br />
|
||
const Allocator& a = Allocator());<br />
|
||
V ~basic_string();<br />
|
||
V basic_string& operator=(const basic_string& str);<br />
|
||
V basic_string& operator=(const charT* s);<br />
|
||
V basic_string& operator=(charT c);<br />
|
||
// _lib.string.iterators_ iterators:<br />
|
||
V iterator begin();<br />
|
||
V const_iterator begin() const;<br />
|
||
V iterator end();<br />
|
||
V const_iterator end() const;<br />
|
||
<br />
|
||
V reverse_iterator rbegin();<br />
|
||
V const_reverse_iterator rbegin() const;<br />
|
||
V reverse_iterator rend();<br />
|
||
V const_reverse_iterator rend() const;<br />
|
||
// _lib.string.capacity_ capacity:<br />
|
||
V size_type size() const;<br />
|
||
V size_type length() const;<br />
|
||
V size_type max_size() const;<br />
|
||
V void resize(size_type n, charT c);<br />
|
||
V void resize(size_type n);<br />
|
||
V size_type capacity() const;<br />
|
||
V void reserve(size_type res_arg = 0);<br />
|
||
V void clear();<br />
|
||
V bool empty() const;<br />
|
||
// _lib.string.access_ element access:<br />
|
||
V const_reference operator[](size_type pos) const;<br />
|
||
V reference operator[](size_type pos);<br />
|
||
V const_reference at(size_type n) const;<br />
|
||
V reference at(size_type n);<br />
|
||
// _lib.string.modifiers_ modifiers:<br />
|
||
V basic_string& operator+=(const basic_string& str);<br />
|
||
V basic_string& operator+=(const charT* s);<br />
|
||
V basic_string& operator+=(charT c);<br />
|
||
V basic_string& append(const basic_string& str);<br />
|
||
V basic_string& append(const basic_string& str, size_type pos,<br />
|
||
size_type n);<br />
|
||
V basic_string& append(const charT* s, size_type n);<br />
|
||
V basic_string& append(const charT* s);<br />
|
||
V basic_string& append(size_type n, charT c);<br />
|
||
V template<class InputIterator><br />
|
||
basic_string& append(InputIterator first, InputIterator last);<br />
|
||
V void push_back(const charT);<br />
|
||
<br />
|
||
V basic_string& assign(const basic_string&);<br />
|
||
V basic_string& assign(const basic_string& str, size_type pos,<br />
|
||
size_type n);<br />
|
||
V basic_string& assign(const charT* s, size_type n);<br />
|
||
V basic_string& assign(const charT* s);<br />
|
||
V basic_string& assign(size_type n, charT c);<br />
|
||
V template<class InputIterator><br />
|
||
basic_string& assign(InputIterator first, InputIterator last);<br />
|
||
V basic_string& insert(size_type pos1, const basic_string& str);<br />
|
||
V basic_string& insert(size_type pos1, const basic_string& str,<br />
|
||
size_type pos2, size_type n);<br />
|
||
V basic_string& insert(size_type pos, const charT* s, size_type n);<br />
|
||
V basic_string& insert(size_type pos, const charT* s);<br />
|
||
V basic_string& insert(size_type pos, size_type n, charT c);<br />
|
||
V iterator insert(iterator p, charT c);<br />
|
||
V void insert(iterator p, size_type n, charT c);<br />
|
||
V template<class InputIterator><br />
|
||
void insert(iterator p, InputIterator first, InputIterator last);<br />
|
||
V basic_string& erase(size_type pos = 0, size_type n = npos);<br />
|
||
V iterator erase(iterator position);<br />
|
||
V iterator erase(iterator first, iterator last);<br />
|
||
V basic_string& replace(size_type pos1, size_type n1,<br />
|
||
const basic_string& str);<br />
|
||
V basic_string& replace(size_type pos1, size_type n1,<br />
|
||
const basic_string& str,<br />
|
||
size_type pos2, size_type n2);<br />
|
||
V basic_string& replace(size_type pos, size_type n1, const charT* s,<br />
|
||
size_type n2);<br />
|
||
V basic_string& replace(size_type pos, size_type n1, const charT* s);<br />
|
||
V basic_string& replace(size_type pos, size_type n1, size_type n2,<br />
|
||
charT c);<br />
|
||
V basic_string& replace(iterator i1, iterator i2, const basic_string& str);<br />
|
||
V basic_string& replace(iterator i1, iterator i2, const charT* s,<br />
|
||
size_type n);<br />
|
||
V basic_string& replace(iterator i1, iterator i2, const charT* s);<br />
|
||
V basic_string& replace(iterator i1, iterator i2,<br />
|
||
size_type n, charT c);<br />
|
||
V template<class InputIterator><br />
|
||
basic_string& replace(iterator i1, iterator i2,<br />
|
||
InputIterator j1, InputIterator j2);<br />
|
||
V size_type copy(charT* s, size_type n, size_type pos = 0) const;<br />
|
||
V void swap(basic_string<charT,traits,Allocator>&);<br />
|
||
// _lib.string.ops_ string operations:<br />
|
||
V const charT* c_str() const; // explicit<br />
|
||
V const charT* data() const;<br />
|
||
V allocator_type get_allocator() const;<br />
|
||
V size_type find (const basic_string& str, size_type pos = 0) const;<br />
|
||
V size_type find (const charT* s, size_type pos, size_type n) const;<br />
|
||
V size_type find (const charT* s, size_type pos = 0) const;<br />
|
||
V size_type find (charT c, size_type pos = 0) const;<br />
|
||
V size_type rfind(const basic_string& str, size_type pos = npos) const;<br />
|
||
V size_type rfind(const charT* s, size_type pos, size_type n) const;<br />
|
||
V size_type rfind(const charT* s, size_type pos = npos) const;<br />
|
||
V size_type rfind(charT c, size_type pos = npos) const;<br />
|
||
<br />
|
||
V size_type find_first_of(const basic_string& str,<br />
|
||
size_type pos = 0) const;<br />
|
||
V size_type find_first_of(const charT* s,<br />
|
||
size_type pos, size_type n) const;<br />
|
||
V size_type find_first_of(const charT* s, size_type pos = 0) const;<br />
|
||
V size_type find_first_of(charT c, size_type pos = 0) const;<br />
|
||
V size_type find_last_of (const basic_string& str,<br />
|
||
size_type pos = npos) const;<br />
|
||
V size_type find_last_of (const charT* s,<br />
|
||
size_type pos, size_type n) const;<br />
|
||
V size_type find_last_of (const charT* s, size_type pos = npos) const;<br />
|
||
V size_type find_last_of (charT c, size_type pos = npos) const;<br />
|
||
V size_type find_first_not_of(const basic_string& str,<br />
|
||
size_type pos = 0) const;<br />
|
||
V size_type find_first_not_of(const charT* s, size_type pos,<br />
|
||
size_type n) const;<br />
|
||
V size_type find_first_not_of(const charT* s, size_type pos = 0) const;<br />
|
||
V size_type find_first_not_of(charT c, size_type pos = 0) const;<br />
|
||
V size_type find_last_not_of (const basic_string& str,<br />
|
||
size_type pos = npos) const;<br />
|
||
V size_type find_last_not_of (const charT* s, size_type pos,<br />
|
||
size_type n) const;<br />
|
||
V size_type find_last_not_of (const charT* s,<br />
|
||
size_type pos = npos) const;<br />
|
||
V size_type find_last_not_of (charT c, size_type pos = npos) const;<br />
|
||
V basic_string substr(size_type pos = 0, size_type n = npos) const;<br />
|
||
V int compare(const basic_string& str) const;<br />
|
||
V int compare(size_type pos1, size_type n1,<br />
|
||
const basic_string& str) const;<br />
|
||
V int compare(size_type pos1, size_type n1,<br />
|
||
const basic_string& str,<br />
|
||
size_type pos2, size_type n2) const;<br />
|
||
V int compare(const charT* s) const;<br />
|
||
V int compare(size_type pos1, size_type n1,<br />
|
||
const charT* s, size_type n2 = npos) const;<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
21.4 Null-terminated sequence utilities [lib.c.strings]<br />
|
||
<br />
|
||
Table 10--Header <cctype> synopsis<br />
|
||
<br />
|
||
isalnum isdigit isprint isupper tolower<br />
|
||
X isalpha isgraph ispunct isxdigit toupper<br />
|
||
iscntrl islower isspace<br />
|
||
<br />
|
||
Table 11--Header <cwctype> synopsis<br />
|
||
<br />
|
||
X Macro: WEOF <cwctype><br />
|
||
X Types: wctrans_t wctype_t wint_t <cwctype><br />
|
||
Functions:<br />
|
||
X iswalnum iswctype iswlower iswspace towctrans wctrans<br />
|
||
X iswalpha iswdigit iswprint iswupper towlower wctype<br />
|
||
X iswcntrl iswgraph iswpunct iswxdigit towupper<br />
|
||
<br />
|
||
Table 12--Header <cstring> synopsis<br />
|
||
<br />
|
||
X Macro: NULL <cstring><br />
|
||
X Type: size_t <cstring><br />
|
||
Functions:<br />
|
||
X memchr strcat strcspn strncpy strtok<br />
|
||
X memcmp strchr strerror strpbrk strxfrm<br />
|
||
X memcpy strcmp strlen strrchr<br />
|
||
X memmove strcoll strncat strspn<br />
|
||
X memset strcpy strncmp strstr<br />
|
||
<br />
|
||
Table 13--Header <cwchar> synopsis<br />
|
||
Macros: NULL <cwchar> WCHAR_MAX WCHAR_MIN WEOF <cwchar><br />
|
||
Types: mbstate_t wint_t <cwchar> size_t<br />
|
||
Functions:<br />
|
||
X btowc getwchar ungetwc wcscpy wcsrtombs wmemchr<br />
|
||
X fgetwc mbrlen vfwprintf wcscspn wcsspn wmemcmp<br />
|
||
X fgetws mbrtowc vswprintf wcsftime wcsstr wmemcpy<br />
|
||
X fputwc mbsinit vwprintf wcslen wcstod wmemmove<br />
|
||
X fputws mbsrtowcs wcrtomb wcsncat wcstok wmemset<br />
|
||
X fwide putwc wcscat wcsncmp wcstol wprintf<br />
|
||
X fwprintf putwchar wcschr wcsncpy wcstoul wscanf<br />
|
||
X fwscanf swprintf wcscmp wcspbrk wcsxfrm<br />
|
||
X getwc swscanf wcscoll wcsrchr wctob<br />
|
||
<br />
|
||
Table 14--Header <cstdlib> synopsis<br />
|
||
<br />
|
||
Macros: MB_CUR_MAX<br />
|
||
Functions:<br />
|
||
X atol mblen strtod wctomb<br />
|
||
X atof mbstowcs strtol wcstombs<br />
|
||
X atoi mbtowc strtoul<br />
|
||
<br />
|
||
X const char* strchr(const char* s, int c);<br />
|
||
X char* strchr( char* s, int c);<br />
|
||
<br />
|
||
X const char* strpbrk(const char* s1, const char* s2);<br />
|
||
X char* strpbrk( char* s1, const char* s2);<br />
|
||
<br />
|
||
X const char* strrchr(const char* s, int c);<br />
|
||
X char* strrchr( char* s, int c);<br />
|
||
<br />
|
||
X const char* strstr(const char* s1, const char* s2);<br />
|
||
X char* strstr( char* s1, const char* s2);<br />
|
||
<br />
|
||
X const void* memchr(const void* s, int c, size_t n);<br />
|
||
X void* memchr( void* s, int c, size_t n);<br />
|
||
<br />
|
||
X const wchar_t* wcschr(const wchar_t* s, wchar_t c);<br />
|
||
X wchar_t* wcschr( wchar_t* s, wchar_t c);<br />
|
||
<br />
|
||
X const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);<br />
|
||
X wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2);<br />
|
||
<br />
|
||
X const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);<br />
|
||
X wchar_t* wcsrchr( wchar_t* s, wchar_t c);<br />
|
||
<br />
|
||
X const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);<br />
|
||
X wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2);<br />
|
||
<br />
|
||
X const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n);<br />
|
||
X wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n);<br />
|
||
<br />
|
||
[for initial efforts on the above, see shadow/string.h]<br />
|
||
<br />
|
||
22.1 Locales [lib.locales]<br />
|
||
<br />
|
||
Header <locale> synopsis<br />
|
||
<br />
|
||
// _lib.locale_, locale:<br />
|
||
T class locale;<br />
|
||
T template <class Facet> const Facet& use_facet(const locale&);<br />
|
||
T template <class Facet> bool has_facet(const locale&) throw();<br />
|
||
<br />
|
||
// _lib.locale.convenience_, convenience interfaces:<br />
|
||
T template <class charT> bool isspace (charT c, const locale& loc);<br />
|
||
T template <class charT> bool isprint (charT c, const locale& loc);<br />
|
||
T template <class charT> bool iscntrl (charT c, const locale& loc);<br />
|
||
T template <class charT> bool isupper (charT c, const locale& loc);<br />
|
||
T template <class charT> bool islower (charT c, const locale& loc);<br />
|
||
T template <class charT> bool isalpha (charT c, const locale& loc);<br />
|
||
T template <class charT> bool isdigit (charT c, const locale& loc);<br />
|
||
T template <class charT> bool ispunct (charT c, const locale& loc);<br />
|
||
T template <class charT> bool isxdigit(charT c, const locale& loc);<br />
|
||
T template <class charT> bool isalnum (charT c, const locale& loc);<br />
|
||
T template <class charT> bool isgraph (charT c, const locale& loc);<br />
|
||
T template <class charT> charT toupper(charT c, const locale& loc);<br />
|
||
T template <class charT> charT tolower(charT c, const locale& loc);<br />
|
||
// _lib.category.ctype_ and _lib.facet.ctype.special_, ctype:<br />
|
||
class ctype_base;<br />
|
||
T template <class charT> class ctype;<br />
|
||
T template <> class ctype<char>; // specialization<br />
|
||
S template <class charT> class ctype_byname;<br />
|
||
S template <> class ctype_byname<char>; // specialization<br />
|
||
T class codecvt_base;<br />
|
||
X template <class internT, class externT, class stateT> class codecvt;<br />
|
||
S template <class internT, class externT, class stateT> class codecvt_byname;<br />
|
||
// _lib.category.numeric_ and _lib.facet.numpunct_, numeric:<br />
|
||
X template <class charT, class InputIterator> class num_get;<br />
|
||
X template <class charT, class OutputIterator> class num_put;<br />
|
||
T template <class charT> class numpunct;<br />
|
||
S template <class charT> class numpunct_byname;<br />
|
||
// _lib.category.collate_, collation:<br />
|
||
T template <class charT> class collate;<br />
|
||
S template <class charT> class collate_byname;<br />
|
||
// _lib.category.time_, date and time:<br />
|
||
T class time_base;<br />
|
||
S template <class charT, class InputIterator> class time_get;<br />
|
||
S template <class charT, class InputIterator> class time_get_byname;<br />
|
||
S template <class charT, class OutputIterator> class time_put;<br />
|
||
S template <class charT, class OutputIterator> class time_put_byname;<br />
|
||
// _lib.category.monetary_, money:<br />
|
||
T class money_base;<br />
|
||
S template <class charT, class InputIterator> class money_get;<br />
|
||
S template <class charT, class OutputIterator> class money_put;<br />
|
||
S template <class charT, bool Intl> class moneypunct;<br />
|
||
S template <class charT, bool Intl> class moneypunct_byname;<br />
|
||
// _lib.category.messages_, message retrieval:<br />
|
||
T class messages_base;<br />
|
||
S template <class charT> class messages;<br />
|
||
S template <class charT> class messages_byname;<br />
|
||
<br />
|
||
<br />
|
||
22.1.1 Class locale [lib.locale]<br />
|
||
<br />
|
||
X class locale {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T class facet;<br />
|
||
T class id;<br />
|
||
T typedef int category;<br />
|
||
T static const category // values assigned here are for exposition only<br />
|
||
T none = 0,<br />
|
||
T collate = 0x010, ctype = 0x020,<br />
|
||
T monetary = 0x040, numeric = 0x080,<br />
|
||
T time = 0x100, messages = 0x200,<br />
|
||
T all = collate | ctype | monetary | numeric | time | messages;<br />
|
||
// construct/copy/destroy:<br />
|
||
T locale() throw()<br />
|
||
T locale(const locale& other) throw()<br />
|
||
X explicit locale(const char* std_name);<br />
|
||
X locale(const locale& other, const char* std_name, category);<br />
|
||
T template <class Facet> locale(const locale& other, Facet* f);<br />
|
||
T locale(const locale& other, const locale& one, category);<br />
|
||
T ~locale() throw(); // non-virtual<br />
|
||
T const locale& operator=(const locale& other) throw();<br />
|
||
T template <class Facet> locale combine(const locale& other) const;<br />
|
||
// locale operations:<br />
|
||
X basic_string<char> name() const;<br />
|
||
T bool operator==(const locale& other) const;<br />
|
||
T bool operator!=(const locale& other) const;<br />
|
||
T template <class charT, class Traits, class Allocator><br />
|
||
bool operator()(const basic_string<charT,Traits,Allocator>& s1,<br />
|
||
const basic_string<charT,Traits,Allocator>& s2) const;<br />
|
||
// global locale objects:<br />
|
||
T static locale global(const locale&);<br />
|
||
T static const locale& classic();<br />
|
||
};<br />
|
||
<br />
|
||
22.1.1.1 locale types [lib.locale.types]<br />
|
||
<br />
|
||
22.1.1.1.1 Type locale::category [lib.locale.category]<br />
|
||
<br />
|
||
T typedef int category;<br />
|
||
<br />
|
||
T none, collate, ctype, monetary, numeric, time, and messages<br />
|
||
<br />
|
||
[required locale members]<br />
|
||
T collate<char>, collate<wchar_t><br />
|
||
T ctype<char>, ctype<wchar_t><br />
|
||
T codecvt<char,char,mbstate_t>,<br />
|
||
S codecvt<wchar_t,char,mbstate_t><br />
|
||
T moneypunct<char>, moneypunct<wchar_t><br />
|
||
T moneypunct<char,true>, moneypunct<wchar_t,true>,<br />
|
||
S money_get<char>, money_get<wchar_t<br />
|
||
S money_put<char>, money_put<wchar_t><br />
|
||
T numpunct<char>, numpunct<wchar_t>,<br />
|
||
X num_get<char>, num_get<wchar_t><br />
|
||
X num_put<char>, num_put<wchar_t><br />
|
||
S time_get<char>, time_get<wchar_t>,<br />
|
||
S time_put<char>, time_put<wchar_t><br />
|
||
S messages<char>, messages<wchar_t><br />
|
||
<br />
|
||
[required instantiations]<br />
|
||
S collate_byname<char>, collate_byname<wchar_t><br />
|
||
S ctype_byname<char>, ctype_byname<wchar_t><br />
|
||
S codecvt_byname<char,char,mbstate_t>,<br />
|
||
S codecvt_byname<wchar_t,char,mbstate_t><br />
|
||
S moneypunct_byname<char,International>,<br />
|
||
S moneypunct_byname<wchar_t,International>,<br />
|
||
S money_get<C,InputIterator>,<br />
|
||
S money_put<C,OutputIterator><br />
|
||
S numpunct_byname<char>, numpunct_byname<wchar_t><br />
|
||
X num_get<C,InputIterator>, num_put<C,OutputIterator><br />
|
||
S time_get<char,InputIterator>,<br />
|
||
S time_get_byname<char,InputIterator>,<br />
|
||
S time_get<wchar_t,OutputIterator>,<br />
|
||
S time_get_byname<wchar_t,OutputIterator>,<br />
|
||
S time_put<char,OutputIterator>,<br />
|
||
S time_put_byname<char,OutputIterator>,<br />
|
||
S time_put<wchar_t,OutputIterator><br />
|
||
S time_put_byname<wchar_t,OutputIterator><br />
|
||
S messages_byname<char>, messages_byname<wchar_t><br />
|
||
<br />
|
||
<br />
|
||
22.1.1.1.2 Class locale::facet [lib.locale.facet]<br />
|
||
<br />
|
||
T class locale::facet {<br />
|
||
protected:<br />
|
||
T explicit facet(size_t refs = 0);<br />
|
||
T virtual ~facet();<br />
|
||
private:<br />
|
||
T facet(const facet&); // not defined<br />
|
||
T void operator=(const facet&); // not defined<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
22.1.1.1.3 Class locale::id [lib.locale.id]<br />
|
||
<br />
|
||
T class locale::id {<br />
|
||
public:<br />
|
||
T id();<br />
|
||
private:<br />
|
||
T void operator=(const id&); // not defined<br />
|
||
T id(const id&); // not defined<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
22.2.1 The ctype category [lib.category.ctype]<br />
|
||
<br />
|
||
T class ctype_base {<br />
|
||
public:<br />
|
||
T enum mask { // numeric values are for exposition only.<br />
|
||
T space=, print=, cntrl=, upper=, lower=,<br />
|
||
T alpha=, digit=, punct=, xdigit=,<br />
|
||
T alnum=, graph=<br />
|
||
};<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.1.1 Template class ctype [lib.locale.ctype]<br />
|
||
<br />
|
||
T template <class charT><br />
|
||
class ctype : public locale::facet, public ctype_base {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T explicit ctype(size_t refs = 0);<br />
|
||
T bool is(mask m, charT c) const;<br />
|
||
T const charT* is(const charT* low, const charT* high, mask* vec) const;<br />
|
||
T const charT* scan_is(mask m,<br />
|
||
const charT* low, const charT* high) const;<br />
|
||
T const charT* scan_not(mask m,<br />
|
||
const charT* low, const charT* high) const;<br />
|
||
T charT toupper(charT c) const;<br />
|
||
T const charT* toupper(charT* low, const charT* high) const;<br />
|
||
T charT tolower(charT c) const;<br />
|
||
T const charT* tolower(charT* low, const charT* high) const;<br />
|
||
T charT widen(char c) const;<br />
|
||
T const char* widen(const char* low, const char* high, charT* to) const;<br />
|
||
T char narrow(charT c, char dfault) const;<br />
|
||
T const charT* narrow(const charT* low, const charT*, char dfault,<br />
|
||
char* to) const;<br />
|
||
T static locale::id id;<br />
|
||
<br />
|
||
protected:<br />
|
||
T ~ctype(); // virtual<br />
|
||
T virtual bool do_is(mask m, charT c) const;<br />
|
||
T virtual const charT* do_is(const charT* low, const charT* high,<br />
|
||
mask* vec) const;<br />
|
||
T virtual const charT* do_scan_is(mask m,<br />
|
||
const charT* low, const charT* high) const;<br />
|
||
T virtual const charT* do_scan_not(mask m,<br />
|
||
const charT* low, const charT* high) const;<br />
|
||
T virtual charT do_toupper(charT) const;<br />
|
||
T virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
|
||
T virtual charT do_tolower(charT) const;<br />
|
||
T virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
|
||
T virtual charT do_widen(char) const;<br />
|
||
T virtual const char* do_widen(const char* low, const char* high,<br />
|
||
charT* dest) const;<br />
|
||
T virtual char do_narrow(charT, char dfault) const;<br />
|
||
T virtual const charT* do_narrow(const charT* low, const charT* high,<br />
|
||
char dfault, char* dest) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.1.2 Template class ctype_byname [lib.locale.ctype.byname]<br />
|
||
<br />
|
||
X template <class charT><br />
|
||
class ctype_byname : public ctype<charT> {<br />
|
||
public:<br />
|
||
T typedef ctype<charT>::mask mask;<br />
|
||
S explicit ctype_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
S ~ctype_byname(); // virtual<br />
|
||
S virtual bool do_is(mask m, charT c) const;<br />
|
||
S virtual const charT* do_is(const charT* low, const charT* high,<br />
|
||
mask* vec) const;<br />
|
||
S virtual const char* do_scan_is(mask m,<br />
|
||
const charT* low, const charT* high) const;<br />
|
||
S virtual const char* do_scan_not(mask m,<br />
|
||
const charT* low, const charT* high) const;<br />
|
||
S virtual charT do_toupper(charT) const;<br />
|
||
S virtual const charT* do_toupper(charT* low, const charT* high) const;<br />
|
||
S virtual charT do_tolower(charT) const;<br />
|
||
S virtual const charT* do_tolower(charT* low, const charT* high) const;<br />
|
||
S virtual charT do_widen(char) const;<br />
|
||
S virtual const char* do_widen(const char* low, const char* high,<br />
|
||
charT* dest) const;<br />
|
||
S virtual char do_narrow(charT, char dfault) const;<br />
|
||
S virtual const charT* do_narrow(const charT* low, const charT* high,<br />
|
||
char dfault, char* dest) const;<br />
|
||
};<br />
|
||
<br />
|
||
22.2.1.3 ctype specializations [lib.facet.ctype.special]<br />
|
||
<br />
|
||
T template <> class ctype<char><br />
|
||
: public locale::facet, public ctype_base {<br />
|
||
public:<br />
|
||
T typedef char char_type;<br />
|
||
T explicit ctype(const mask* tab = 0, bool del = false,<br />
|
||
size_t refs = 0);<br />
|
||
T bool is(mask m, char c) const;<br />
|
||
T const char* is(const char* low, const char* high, mask* vec) const;<br />
|
||
T const char* scan_is (mask m,<br />
|
||
const char* low, const char* high) const;<br />
|
||
T const char* scan_not(mask m,<br />
|
||
const char* low, const char* high) const;<br />
|
||
T char toupper(char c) const;<br />
|
||
T const char* toupper(char* low, const char* high) const;<br />
|
||
T char tolower(char c) const;<br />
|
||
T const char* tolower(char* low, const char* high) const;<br />
|
||
T char widen(char c) const;<br />
|
||
T const char* widen(const char* low, const char* high, char* to) const;<br />
|
||
T char narrow(char c, char dfault) const;<br />
|
||
T const char* narrow(const char* low, const char* high, char dfault,<br />
|
||
char* to) const;<br />
|
||
T static locale::id id;<br />
|
||
T static const size_t table_size = IMPLEMENTATION_DEFINED;<br />
|
||
<br />
|
||
protected:<br />
|
||
T const mask* table() const throw();<br />
|
||
T static const mask* classic_table() throw();<br />
|
||
T ~ctype(); // virtual<br />
|
||
T virtual char do_toupper(char c) const;<br />
|
||
T virtual const char* do_toupper(char* low, const char* high) const;<br />
|
||
T virtual char do_tolower(char c) const;<br />
|
||
T virtual const char* do_tolower(char* low, const char* high) const;<br />
|
||
<br />
|
||
T virtual char do_widen(char c) const;<br />
|
||
T virtual const char* do_widen(const char* low,<br />
|
||
const char* high,<br />
|
||
char* to) const;<br />
|
||
T virtual char do_narrow(char c, char dfault) const;<br />
|
||
T virtual const char* do_narrow(const char* low,<br />
|
||
const char* high,<br />
|
||
char dfault, char* to) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.1.4 Class [lib.locale.ctype.byname.special]<br />
|
||
ctype_byname<char><br />
|
||
<br />
|
||
X template <> class ctype_byname<char> : public ctype<char> {<br />
|
||
public:<br />
|
||
S explicit ctype_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
S ~ctype_byname(); // virtual<br />
|
||
S virtual char do_toupper(char c) const;<br />
|
||
S virtual const char* do_toupper(char* low, const char* high) const;<br />
|
||
S virtual char do_tolower(char c) const;<br />
|
||
S virtual const char* do_tolower(char* low, const char* high) const;<br />
|
||
<br />
|
||
S virtual char do_widen(char c) const;<br />
|
||
S virtual const char* do_widen(char* low,<br />
|
||
const char* high,<br />
|
||
char* to) const;<br />
|
||
S virtual char do_widen(char c) const;<br />
|
||
S virtual const char* do_widen(char* low, const char* high) const;<br />
|
||
<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
22.2.1.5 Template class codecvt [lib.locale.codecvt]<br />
|
||
<br />
|
||
T class codecvt_base {<br />
|
||
public:<br />
|
||
T enum result { ok, partial, error, noconv };<br />
|
||
};<br />
|
||
<br />
|
||
T template <class internT, class externT, class stateT><br />
|
||
class codecvt : public locale::facet, public codecvt_base {<br />
|
||
public:<br />
|
||
T typedef internT intern_type;<br />
|
||
T typedef externT extern_type;<br />
|
||
T typedef stateT state_type;<br />
|
||
T explicit codecvt(size_t refs = 0)<br />
|
||
T result out(stateT& state,<br />
|
||
const internT* from, const internT* from_end, const internT*& from_next,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
T result unshift(stateT& state,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
T result in(stateT& state,<br />
|
||
const externT* from, const externT* from_end, const externT*& from_next,<br />
|
||
internT* to, internT* to_limit, internT*& to_next) const;<br />
|
||
T int encoding() const throw();<br />
|
||
T bool always_noconv() const throw();<br />
|
||
T int length(const stateT&, const externT* from, const externT* end,<br />
|
||
size_t max) const;<br />
|
||
T int max_length() const throw();<br />
|
||
T static locale::id id;<br />
|
||
<br />
|
||
protected:<br />
|
||
T ~codecvt(); // virtual<br />
|
||
T virtual result do_out(stateT& state,<br />
|
||
const internT* from, const internT* from_end, const internT*& from_next,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
T virtual result do_in(stateT& state,<br />
|
||
T const externT* from, const externT* from_end, const externT*& from_next,<br />
|
||
internT* to, internT* to_limit, internT*& to_next) const;<br />
|
||
T virtual result do_unshift(stateT& state,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
T virtual int do_encoding() const throw();<br />
|
||
T virtual bool do_always_noconv() const throw();<br />
|
||
T virtual int do_length(const stateT&, const externT* from,<br />
|
||
const externT* end, size_t max) const;<br />
|
||
T virtual int do_max_length() const throw();<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
22.2.1.6 Template class [lib.locale.codecvt.byname]<br />
|
||
codecvt_byname<br />
|
||
<br />
|
||
X template <class internT, class externT, class stateT><br />
|
||
class codecvt_byname : public codecvt<internT, externT, stateT> {<br />
|
||
public:<br />
|
||
S explicit codecvt_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
S ~codecvt_byname(); // virtual<br />
|
||
S virtual result do_out(stateT& state,<br />
|
||
const internT* from, const internT* from_end, const internT*& from_next,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
S virtual result do_in(stateT& state,<br />
|
||
const externT* from, const externT* from_end, const externT*& from_next,<br />
|
||
internT* to, internT* to_limit, internT*& to_next) const;<br />
|
||
S virtual result do_unshift(stateT& state,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
S virtual int do_encoding() const throw();<br />
|
||
S virtual bool do_always_noconv() const throw();<br />
|
||
S virtual int do_length(const stateT&, const externT* from,<br />
|
||
const externT* end, size_t max) const;<br />
|
||
S virtual result do_unshift(stateT& state,<br />
|
||
externT* to, externT* to_limit, externT*& to_next) const;<br />
|
||
S virtual int do_max_length() const throw();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.2.1 Template class num_get [lib.locale.num.get]<br />
|
||
<br />
|
||
X template <class charT, class InputIterator = istreambuf_iterator<charT> ><br />
|
||
class num_get : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef InputIterator iter_type;<br />
|
||
T explicit num_get(size_t refs = 0);<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, bool& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base& ,<br />
|
||
ios_base::iostate& err, long& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, unsigned short& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, unsigned int& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, unsigned long& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, float& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, double& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, long double& v) const;<br />
|
||
T iter_type get(iter_type in, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, void*& v) const;<br />
|
||
T static locale::id id;<br />
|
||
<br />
|
||
protected:<br />
|
||
T ~num_get(); // virtual<br />
|
||
T virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, bool& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, long& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, unsigned short& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, unsigned int& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, unsigned long& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, float& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, double& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, long double& v) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, ios_base&,<br />
|
||
ios_base::iostate& err, void*& v) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
22.2.2.2 Template class num_put [lib.locale.nm.put]<br />
|
||
<br />
|
||
X template <class charT, class OutputIterator = ostreambuf_iterator<charT> ><br />
|
||
class num_put : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef OutputIterator iter_type;<br />
|
||
T explicit num_put(size_t refs = 0);<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill, bool v) const;<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill, long v) const;<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
|
||
unsigned long v) const;<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
|
||
double v) const;<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
|
||
long double v) const;<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
|
||
const void* v) const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
T ~num_put(); // virtual<br />
|
||
T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
|
||
bool v) const;<br />
|
||
T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
|
||
long v) const;<br />
|
||
T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
|
||
unsigned long) const;<br />
|
||
S virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
|
||
double v) const;<br />
|
||
S virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
|
||
long double v) const;<br />
|
||
T virtual iter_type do_put(iter_type, ios_base&, char_type fill,<br />
|
||
const void* v) const;<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
22.2.3.1 Template class numpunct [lib.locale.numpunct]<br />
|
||
<br />
|
||
T template <class charT><br />
|
||
class numpunct : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit numpunct(size_t refs = 0);<br />
|
||
T char_type decimal_point() const;<br />
|
||
T char_type thousands_sep() const;<br />
|
||
T string grouping() const;<br />
|
||
T string_type truename() const;<br />
|
||
T string_type falsename() const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
T ~numpunct(); // virtual<br />
|
||
T virtual char_type do_decimal_point() const;<br />
|
||
T virtual char_type do_thousands_sep() const;<br />
|
||
T virtual string do_grouping() const;<br />
|
||
T virtual string_type do_truename() const; // for bool<br />
|
||
T virtual string_type do_falsename() const; // for bool<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
22.2.3.2 Template class [lib.locale.numpunct.byname]<br />
|
||
numpunct_byname<br />
|
||
<br />
|
||
X template <class charT><br />
|
||
class numpunct_byname : public numpunct<charT> {<br />
|
||
// this class is specialized for char and wchar_t.<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
S explicit numpunct_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
S ~numpunct_byname(); // virtual<br />
|
||
S virtual char_type do_decimal_point() const;<br />
|
||
S virtual char_type do_thousands_sep() const;<br />
|
||
S virtual string do_grouping() const;<br />
|
||
S virtual string_type do_truename() const; // for bool<br />
|
||
S virtual string_type do_falsename() const; // for bool<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.4.1 Template class collate [lib.locale.collate]<br />
|
||
<br />
|
||
T template <class charT><br />
|
||
class collate : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit collate(size_t refs = 0);<br />
|
||
T int compare(const charT* low1, const charT* high1,<br />
|
||
const charT* low2, const charT* high2) const;<br />
|
||
T string_type transform(const charT* low, const charT* high) const;<br />
|
||
T long hash(const charT* low, const charT* high) const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
T ~collate(); // virtual<br />
|
||
T virtual int do_compare(const charT* low1, const charT* high1,<br />
|
||
const charT* low2, const charT* high2) const;<br />
|
||
T virtual string_type do_transform<br />
|
||
(const charT* low, const charT* high) const;<br />
|
||
T virtual long do_hash (const charT* low, const charT* high) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.4.2 Template class [lib.locale.collate.byname]<br />
|
||
collate_byname<br />
|
||
<br />
|
||
X template <class charT><br />
|
||
class collate_byname : public collate<charT> {<br />
|
||
public:<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit collate_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
S ~collate_byname(); // virtual<br />
|
||
S virtual int do_compare(const charT* low1, const charT* high1,<br />
|
||
const charT* low2, const charT* high2) const;<br />
|
||
S virtual string_type do_transform<br />
|
||
(const charT* low, const charT* high) const;<br />
|
||
S virtual long do_hash (const charT* low, const charT* high) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.5.1 Template class time_get [lib.locale.time.get]<br />
|
||
<br />
|
||
T class time_base {<br />
|
||
public:<br />
|
||
T enum dateorder { no_order, dmy, mdy, ymd, ydm };<br />
|
||
};<br />
|
||
<br />
|
||
[Note: semantics of time_get members are implementation-defined.<br />
|
||
To complete implementation requires documenting behavior.]<br />
|
||
<br />
|
||
X template <class charT, class InputIterator = istreambuf_iterator<charT> ><br />
|
||
class time_get : public locale::facet, public time_base {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef InputIterator iter_type;<br />
|
||
T explicit time_get(size_t refs = 0);<br />
|
||
<br />
|
||
T dateorder date_order() const { return do_date_order(); }<br />
|
||
T iter_type get_time(iter_type s, iter_type end, ios_base& f,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T iter_type get_date(iter_type s, iter_type end, ios_base& f,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T iter_type get_weekday(iter_type s, iter_type end, ios_base& f,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T iter_type get_monthname(iter_type s, iter_type end, ios_base& f,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T iter_type get_year(iter_type s, iter_type end, ios_base& f,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
~time_get(); // virtual<br />
|
||
X virtual dateorder do_date_order() const;<br />
|
||
S virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
S virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
S virtual iter_type do_get_monthname(iter_type s, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
22.2.5.2 Template class [lib.locale.time.get.byname]<br />
|
||
time_get_byname<br />
|
||
<br />
|
||
X template <class charT, class InputIterator = istreambuf_iterator<charT> ><br />
|
||
class time_get_byname : public time_get<charT, InputIterator> {<br />
|
||
public:<br />
|
||
T typedef time_base::dateorder dateorder;<br />
|
||
T typedef InputIterator iter_type<br />
|
||
<br />
|
||
S explicit time_get_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
S ~time_get_byname(); // virtual<br />
|
||
S virtual dateorder do_date_order() const;<br />
|
||
S virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
T virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&,<br />
|
||
ios_base::iostate& err, tm* t) const;<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
22.2.5.3 Template class time_put [lib.locale.time.put]<br />
|
||
<br />
|
||
X template <class charT, class OutputIterator = ostreambuf_iterator<charT> ><br />
|
||
class time_put : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef OutputIterator iter_type;<br />
|
||
T explicit time_put(size_t refs = 0);<br />
|
||
// the following is implemented in terms of other member functions.<br />
|
||
S iter_type put(iter_type s, ios_base& f, char_type fill, const tm* tmb,<br />
|
||
const charT* pattern, const charT* pat_end) const;<br />
|
||
T iter_type put(iter_type s, ios_base& f, char_type fill,<br />
|
||
const tm* tmb, char format, char modifier = 0) const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
T ~time_put(); // virtual<br />
|
||
S virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t,<br />
|
||
char format, char modifier) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
22.2.5.4 Template class [lib.locale.time.put.byname]<br />
|
||
time_put_byname<br />
|
||
<br />
|
||
T template <class charT, class OutputIterator = ostreambuf_iterator<charT> ><br />
|
||
class time_put_byname : public time_put<charT, OutputIterator><br />
|
||
{<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef OutputIterator iter_type;<br />
|
||
<br />
|
||
T explicit time_put_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
T ~time_put_byname(); // virtual<br />
|
||
S virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t,<br />
|
||
char format, char modifier) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.6.1 Template class money_get [lib.locale.money.get]<br />
|
||
<br />
|
||
X template <class charT,<br />
|
||
class InputIterator = istreambuf_iterator<charT> ><br />
|
||
class money_get : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef InputIterator iter_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit money_get(size_t refs = 0);<br />
|
||
T iter_type get(iter_type s, iter_type end, bool intl,<br />
|
||
ios_base& f, ios_base::iostate& err,<br />
|
||
long double& units) const;<br />
|
||
T iter_type get(iter_type s, iter_type end, bool intl,<br />
|
||
ios_base& f, ios_base::iostate& err,<br />
|
||
string_type& digits) const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
T ~money_get(); // virtual<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&,<br />
|
||
ios_base::iostate& err, long double& units) const;<br />
|
||
S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&,<br />
|
||
ios_base::iostate& err, string_type& digits) const;<br />
|
||
};<br />
|
||
<br />
|
||
22.2.6.2 Template class money_put [lib.locale.money.put]<br />
|
||
<br />
|
||
X template <class charT,<br />
|
||
class OutputIterator = ostreambuf_iterator<charT> ><br />
|
||
class money_put : public locale::facet {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef OutputIterator iter_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit money_put(size_t refs = 0);<br />
|
||
T iter_type put(iter_type s, bool intl, ios_base& f,<br />
|
||
char_type fill, long double units) const;<br />
|
||
T iter_type put(iter_type s, bool intl, ios_base& f,<br />
|
||
char_type fill, const string_type& digits) const;<br />
|
||
T static locale::id id;<br />
|
||
<br />
|
||
protected:<br />
|
||
T ~money_put(); // virtual<br />
|
||
S virtual iter_type<br />
|
||
do_put(iter_type, bool, ios_base&, char_type fill,<br />
|
||
long double units) const;<br />
|
||
S virtual iter_type<br />
|
||
do_put(iter_type, bool, ios_base&, char_type fill,<br />
|
||
const string_type& digits) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.2.6.3 Template class moneypunct [lib.locale.moneypunct]<br />
|
||
<br />
|
||
T class money_base {<br />
|
||
public:<br />
|
||
T enum part { none, space, symbol, sign, value };<br />
|
||
T struct pattern { char field[4]; };<br />
|
||
};<br />
|
||
<br />
|
||
X template <class charT, bool International = false><br />
|
||
class moneypunct : public locale::facet, public money_base {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit moneypunct(size_t refs = 0);<br />
|
||
T charT decimal_point() const;<br />
|
||
T charT thousands_sep() const;<br />
|
||
T string grouping() const;<br />
|
||
T string_type curr_symbol() const;<br />
|
||
T string_type positive_sign() const;<br />
|
||
T string_type negative_sign() const;<br />
|
||
T int frac_digits() const;<br />
|
||
T pattern pos_format() const;<br />
|
||
T pattern neg_format() const;<br />
|
||
T static locale::id id;<br />
|
||
T static const bool intl = International;<br />
|
||
protected:<br />
|
||
T ~moneypunct(); // virtual<br />
|
||
S virtual charT do_decimal_point() const;<br />
|
||
S virtual charT do_thousands_sep() const;<br />
|
||
S virtual string do_grouping() const;<br />
|
||
S virtual string_type do_curr_symbol() const;<br />
|
||
S virtual string_type do_positive_sign() const;<br />
|
||
S virtual string_type do_negative_sign() const;<br />
|
||
S virtual int do_frac_digits() const;<br />
|
||
T virtual pattern do_pos_format() const;<br />
|
||
T virtual pattern do_neg_format() const;<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
22.2.6.4 Template class [lib.locale.moneypunct.byname]<br />
|
||
moneypunct_byname<br />
|
||
<br />
|
||
X template <class charT, bool Intl = false><br />
|
||
class moneypunct_byname : public moneypunct<charT, Intl> {<br />
|
||
public:<br />
|
||
T typedef money_base::pattern pattern;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
<br />
|
||
T explicit moneypunct_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
T ~moneypunct_byname(); // virtual<br />
|
||
S virtual charT do_decimal_point() const;<br />
|
||
S virtual charT do_thousands_sep() const;<br />
|
||
S virtual string do_grouping() const;<br />
|
||
S virtual string_type do_curr_symbol() const;<br />
|
||
S virtual string_type do_positive_sign() const;<br />
|
||
S virtual string_type do_negative_sign() const;<br />
|
||
S virtual int do_frac_digits() const;<br />
|
||
S virtual pattern do_pos_format() const;<br />
|
||
S virtual pattern do_neg_format() const;<br />
|
||
};<br />
|
||
<br />
|
||
22.2.7.1 Template class messages [lib.locale.messages]<br />
|
||
<br />
|
||
T class messages_base {<br />
|
||
public:<br />
|
||
T typedef int catalog;<br />
|
||
};<br />
|
||
<br />
|
||
X template <class charT><br />
|
||
class messages : public locale::facet, public messages_base {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
T explicit messages(size_t refs = 0);<br />
|
||
T catalog open(const basic_string<char>& fn, const locale&) const;<br />
|
||
T string_type get(catalog c, int set, int msgid,<br />
|
||
const string_type& dfault) const;<br />
|
||
T void close(catalog c) const;<br />
|
||
T static locale::id id;<br />
|
||
protected:<br />
|
||
T ~messages(); // virtual<br />
|
||
S virtual catalog do_open(const basic_string<char>&, const locale&) const;<br />
|
||
S virtual string_type do_get(catalog, int set, int msgid,<br />
|
||
const string_type& dfault) const;<br />
|
||
S virtual void do_close(catalog) const;<br />
|
||
};<br />
|
||
<br />
|
||
22.2.7.2 Template class [lib.locale.messages.byname]<br />
|
||
messages_byname<br />
|
||
<br />
|
||
<br />
|
||
X template <class charT><br />
|
||
class messages_byname : public messages<charT> {<br />
|
||
public:<br />
|
||
T typedef messages_base::catalog catalog;<br />
|
||
T typedef basic_string<charT> string_type;<br />
|
||
<br />
|
||
T explicit messages_byname(const char*, size_t refs = 0);<br />
|
||
protected:<br />
|
||
T ~messages_byname(); // virtual<br />
|
||
S virtual catalog do_open(const basic_string<char>&, const locale&) const;<br />
|
||
S virtual string_type do_get(catalog, int set, int msgid,<br />
|
||
const string_type& dfault) const;<br />
|
||
S virtual void do_close(catalog) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
22.3 C Library Locales [lib.c.locales]<br />
|
||
<br />
|
||
<br />
|
||
Table 13--Header <clocale> synopsis<br />
|
||
Macros:<br />
|
||
X LC_ALL LC_COLLATE LC_CTYPE<br />
|
||
X LC_MONETARY LC_NUMERIC LC_TIME<br />
|
||
X NULL<br />
|
||
X Struct: lconv<br />
|
||
X Functions: localeconv setlocale<br />
|
||
<br />
|
||
<br />
|
||
23.2 Sequences [lib.sequences]<br />
|
||
<br />
|
||
<deque>, <list>, <queue>, <stack>, and <vector>.<br />
|
||
<br />
|
||
Header <deque> synopsis<br />
|
||
<br />
|
||
T template <class T, class Allocator = allocator<T> > class deque;<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator==(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator< (const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator!=(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator> (const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator>=(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator<=(const deque<T,Allocator>& x, const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
void swap(deque<T,Allocator>& x, deque<T,Allocator>& y);<br />
|
||
}<br />
|
||
<br />
|
||
Header <list> synopsis<br />
|
||
<br />
|
||
T template <class T, class Allocator = allocator<T> > class list;<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator==(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator< (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator!=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator> (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator>=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator<=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
void swap(list<T,Allocator>& x, list<T,Allocator>& y);<br />
|
||
}<br />
|
||
<br />
|
||
Header <queue> synopsis<br />
|
||
<br />
|
||
namespace std {<br />
|
||
T template <class T, class Container = deque<T> > class queue;<br />
|
||
T template <class T, class Container><br />
|
||
bool operator==(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator< (const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator!=(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator> (const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator>=(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator<=(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container = vector<T>,<br />
|
||
class Compare = less<typename Container::value_type> ><br />
|
||
T class priority_queue;<br />
|
||
}<br />
|
||
<br />
|
||
Header <stack> synopsis<br />
|
||
<br />
|
||
namespace std {<br />
|
||
T template <class T, class Container = deque<T> > class stack;<br />
|
||
T template <class T, class Container><br />
|
||
bool operator==(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator< (const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator!=(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator> (const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator>=(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator<=(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
}<br />
|
||
<br />
|
||
Header <vector> synopsis<br />
|
||
<br />
|
||
T template <class T, class Allocator = allocator<T> > class vector;<br />
|
||
<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator==(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator< (const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator!=(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator> (const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator>=(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator<=(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
void swap(vector<T,Allocator>& x, vector<T,Allocator>& y);<br />
|
||
<br />
|
||
T template <class Allocator> class vector<bool,Allocator>;<br />
|
||
T template <class Allocator><br />
|
||
bool operator==(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator< (const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator!=(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator> (const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator>=(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator<=(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
void swap(vector<bool,Allocator>& x, vector<bool,Allocator>& y);<br />
|
||
}<br />
|
||
<br />
|
||
23.2.1 Template class deque [lib.deque]<br />
|
||
<br />
|
||
template <class T, class Allocator = allocator<T> ><br />
|
||
T class deque {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type;<br />
|
||
T typedef T value_type;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer;<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
// _lib.deque.cons_ construct/copy/destroy:<br />
|
||
T explicit deque(const Allocator& = Allocator());<br />
|
||
T explicit deque(size_type n, const T& value = T(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
deque(InputIterator first, InputIterator last,<br />
|
||
const Allocator& = Allocator());<br />
|
||
T deque(const deque<T,Allocator>& x);<br />
|
||
T ~deque();<br />
|
||
T deque<T,Allocator>& operator=(const deque<T,Allocator>& x);<br />
|
||
T template <class InputIterator><br />
|
||
void assign(InputIterator first, InputIterator last);<br />
|
||
T void assign(size_type n, const T& t);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// _lib.deque.capacity_ capacity:<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
T void resize(size_type sz, T c = T());<br />
|
||
T bool empty() const;<br />
|
||
<br />
|
||
// element access:<br />
|
||
T reference operator[](size_type n);<br />
|
||
T const_reference operator[](size_type n) const;<br />
|
||
T reference at(size_type n);<br />
|
||
T const_reference at(size_type n) const;<br />
|
||
T reference front();<br />
|
||
T const_reference front() const;<br />
|
||
T reference back();<br />
|
||
T const_reference back() const;<br />
|
||
// _lib.deque.modifiers_ modifiers:<br />
|
||
T void push_front(const T& x);<br />
|
||
T void push_back(const T& x);<br />
|
||
T iterator insert(iterator position, const T& x);<br />
|
||
T void insert(iterator position, size_type n, const T& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert (iterator position,<br />
|
||
InputIterator first, InputIterator last);<br />
|
||
T void pop_front();<br />
|
||
T void pop_back();<br />
|
||
T iterator erase(iterator position);<br />
|
||
T iterator erase(iterator first, iterator last);<br />
|
||
T void swap(deque<T,Allocator>&);<br />
|
||
T void clear();<br />
|
||
};<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator==(const deque<T,Allocator>& x,<br />
|
||
const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator< (const deque<T,Allocator>& x,<br />
|
||
const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator!=(const deque<T,Allocator>& x,<br />
|
||
const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator> (const deque<T,Allocator>& x,<br />
|
||
const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator>=(const deque<T,Allocator>& x,<br />
|
||
const deque<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator<=(const deque<T,Allocator>& x,<br />
|
||
const deque<T,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class T, class Allocator><br />
|
||
void swap(deque<T,Allocator>& x, deque<T,Allocator>& y);<br />
|
||
<br />
|
||
<br />
|
||
23.2.2 Template class list [lib.list]<br />
|
||
<br />
|
||
T template <class T, class Allocator = allocator<T> ><br />
|
||
class list {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type;<br />
|
||
T typedef T value_type;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer;<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
<br />
|
||
// _lib.list.cons_ construct/copy/destroy:<br />
|
||
T explicit list(const Allocator& = Allocator());<br />
|
||
T explicit list(size_type n, const T& value = T(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
list(InputIterator first, InputIterator last,<br />
|
||
const Allocator& = Allocator());<br />
|
||
T list(const list<T,Allocator>& x);<br />
|
||
T ~list();<br />
|
||
T list<T,Allocator>& operator=(const list<T,Allocator>& x);<br />
|
||
T template <class InputIterator><br />
|
||
void assign(InputIterator first, InputIterator last);<br />
|
||
T void assign(size_type n, const T& t);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// _lib.list.capacity_ capacity:<br />
|
||
T bool empty() const;<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
T void resize(size_type sz, T c = T());<br />
|
||
// element access:<br />
|
||
T reference front();<br />
|
||
T const_reference front() const;<br />
|
||
T reference back();<br />
|
||
T const_reference back() const;<br />
|
||
// _lib.list.modifiers_ modifiers:<br />
|
||
T void push_front(const T& x);<br />
|
||
T void pop_front();<br />
|
||
T void push_back(const T& x);<br />
|
||
T void pop_back();<br />
|
||
T iterator insert(iterator position, const T& x);<br />
|
||
T void insert(iterator position, size_type n, const T& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert(iterator position, InputIterator first,<br />
|
||
InputIterator last);<br />
|
||
T iterator erase(iterator position);<br />
|
||
T iterator erase(iterator position, iterator last);<br />
|
||
T void swap(list<T,Allocator>&);<br />
|
||
T void clear();<br />
|
||
// _lib.list.ops_ list operations:<br />
|
||
T void splice(iterator position, list<T,Allocator>& x);<br />
|
||
T void splice(iterator position, list<T,Allocator>& x, iterator i);<br />
|
||
T void splice(iterator position, list<T,Allocator>& x, iterator first,<br />
|
||
iterator last);<br />
|
||
T void remove(const T& value);<br />
|
||
T template <class Predicate> void remove_if(Predicate pred);<br />
|
||
<br />
|
||
T void unique();<br />
|
||
T template <class BinaryPredicate><br />
|
||
void unique(BinaryPredicate binary_pred);<br />
|
||
T void merge(list<T,Allocator>& x);<br />
|
||
T template <class Compare> void merge(list<T,Allocator>& x, Compare comp);<br />
|
||
void sort();<br />
|
||
T template <class Compare> void sort(Compare comp);<br />
|
||
void reverse();<br />
|
||
};<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator==(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator< (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator!=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator> (const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator>=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator<=(const list<T,Allocator>& x, const list<T,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class T, class Allocator><br />
|
||
void swap(list<T,Allocator>& x, list<T,Allocator>& y);<br />
|
||
<br />
|
||
<br />
|
||
23.2.3.1 Template class queue [lib.queue]<br />
|
||
<br />
|
||
T template <class T, class Container = deque<T> ><br />
|
||
class queue {<br />
|
||
public:<br />
|
||
T typedef typename Container::value_type value_type;<br />
|
||
T typedef typename Container::size_type size_type;<br />
|
||
T typedef Container container_type;<br />
|
||
protected:<br />
|
||
T Container c;<br />
|
||
public:<br />
|
||
T explicit queue(const Container& = Container());<br />
|
||
<br />
|
||
T bool empty() const { return c.empty(); }<br />
|
||
T size_type size() const { return c.size(); }<br />
|
||
T value_type& front() { return c.front(); }<br />
|
||
T const value_type& front() const { return c.front(); }<br />
|
||
T value_type& back() { return c.back(); }<br />
|
||
T const value_type& back() const { return c.back(); }<br />
|
||
T void push(const value_type& x) { c.push_back(x); }<br />
|
||
T void pop() { c.pop_front(); }<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T, class Container><br />
|
||
bool operator==(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator< (const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator!=(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator> (const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator>=(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator<=(const queue<T, Container>& x,<br />
|
||
const queue<T, Container>& y);<br />
|
||
<br />
|
||
23.2.3.2 Template class priority_queue [lib.priority.queue]<br />
|
||
<br />
|
||
T template <class T, class Container = vector<T>,<br />
|
||
class Compare = less<typename Container::value_type> ><br />
|
||
class priority_queue {<br />
|
||
public:<br />
|
||
T typedef typename Container::value_type value_type;<br />
|
||
T typedef typename Container::size_type size_type;<br />
|
||
T typedef Container container_type;<br />
|
||
protected:<br />
|
||
T Container c;<br />
|
||
T Compare comp;<br />
|
||
public:<br />
|
||
T explicit priority_queue(const Compare& x = Compare(),<br />
|
||
const Container& = Container());<br />
|
||
T template <class InputIterator><br />
|
||
priority_queue(InputIterator first, InputIterator last,<br />
|
||
const Compare& x = Compare(),<br />
|
||
const Container& = Container());<br />
|
||
<br />
|
||
T bool empty() const { return c.empty(); }<br />
|
||
T size_type size() const { return c.size(); }<br />
|
||
T const value_type& top() const { return c.front(); }<br />
|
||
T void push(const value_type& x);<br />
|
||
T void pop();<br />
|
||
};<br />
|
||
<br />
|
||
23.2.3.3 Template class stack [lib.stack]<br />
|
||
<br />
|
||
T template <class T, class Container = deque<T> ><br />
|
||
class stack {<br />
|
||
public:<br />
|
||
T typedef typename Container::value_type value_type;<br />
|
||
T typedef typename Container::size_type size_type;<br />
|
||
T typedef Container container_type;<br />
|
||
protected:<br />
|
||
T Container c;<br />
|
||
public:<br />
|
||
T explicit stack(const Container& = Container());<br />
|
||
<br />
|
||
T bool empty() const { return c.empty(); }<br />
|
||
T size_type size() const { return c.size(); }<br />
|
||
T value_type& top() { return c.back(); }<br />
|
||
T const value_type& top() const { return c.back(); }<br />
|
||
T void push(const value_type& x) { c.push_back(x); }<br />
|
||
T void pop() { c.pop_back(); }<br />
|
||
};<br />
|
||
T template <class T, class Container><br />
|
||
bool operator==(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator< (const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator!=(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator> (const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator>=(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
T template <class T, class Container><br />
|
||
bool operator<=(const stack<T, Container>& x,<br />
|
||
const stack<T, Container>& y);<br />
|
||
<br />
|
||
23.2.4 Template class vector [lib.vector]<br />
|
||
<br />
|
||
template <class T, class Allocator = allocator<T> ><br />
|
||
T class vector {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type;<br />
|
||
T typedef T value_type;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
// _lib.vector.cons_ construct/copy/destroy:<br />
|
||
T explicit vector(const Allocator& = Allocator());<br />
|
||
T explicit vector(size_type n, const T& value = T(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
vector(InputIterator first, InputIterator last,<br />
|
||
const Allocator& = Allocator());<br />
|
||
T vector(const vector<T,Allocator>& x);<br />
|
||
T ~vector();<br />
|
||
T vector<T,Allocator>& operator=(const vector<T,Allocator>& x);<br />
|
||
T template <class InputIterator><br />
|
||
void assign(InputIterator first, InputIterator last);<br />
|
||
T void assign(size_type n, const T& u);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// _lib.vector.capacity_ capacity:<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
T void resize(size_type sz, T c = T());<br />
|
||
T size_type capacity() const;<br />
|
||
T bool empty() const;<br />
|
||
T void reserve(size_type n);<br />
|
||
<br />
|
||
// element access:<br />
|
||
T reference operator[](size_type n);<br />
|
||
T const_reference operator[](size_type n) const;<br />
|
||
T const_reference at(size_type n) const;<br />
|
||
T reference at(size_type n);<br />
|
||
T reference front();<br />
|
||
T const_reference front() const;<br />
|
||
T reference back();<br />
|
||
T const_reference back() const;<br />
|
||
// _lib.vector.modifiers_ modifiers:<br />
|
||
T void push_back(const T& x);<br />
|
||
T void pop_back();<br />
|
||
T iterator insert(iterator position, const T& x);<br />
|
||
T void insert(iterator position, size_type n, const T& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert(iterator position,<br />
|
||
InputIterator first, InputIterator last);<br />
|
||
T iterator erase(iterator position);<br />
|
||
T iterator erase(iterator first, iterator last);<br />
|
||
T void swap(vector<T,Allocator>&);<br />
|
||
T void clear();<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator==(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator< (const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator!=(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator> (const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator>=(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
T template <class T, class Allocator><br />
|
||
bool operator<=(const vector<T,Allocator>& x,<br />
|
||
const vector<T,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class T, class Allocator><br />
|
||
void swap(vector<T,Allocator>& x, vector<T,Allocator>& y);<br />
|
||
<br />
|
||
<br />
|
||
23.2.5 Class vector<bool> [lib.vector.bool]<br />
|
||
<br />
|
||
T template <class Allocator> class vector<bool, Allocator> {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef bool const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type;<br />
|
||
T typedef bool value_type;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef implementation defined pointer;<br />
|
||
T typedef implementation defined const_pointer<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
// bit reference:<br />
|
||
T class reference {<br />
|
||
friend class vector;<br />
|
||
T reference();<br />
|
||
public:<br />
|
||
T ~reference();<br />
|
||
T operator bool() const;<br />
|
||
T reference& operator=(const bool x);<br />
|
||
T reference& operator=(const reference& x);<br />
|
||
T void flip(); // flips the bit<br />
|
||
};<br />
|
||
<br />
|
||
// construct/copy/destroy:<br />
|
||
T explicit vector(const Allocator& = Allocator());<br />
|
||
T explicit vector(size_type n, const bool& value = bool(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
vector(InputIterator first, InputIterator last,<br />
|
||
const Allocator& = Allocator());<br />
|
||
T vector(const vector<bool,Allocator>& x);<br />
|
||
T ~vector();<br />
|
||
T vector<bool,Allocator>& operator=(const vector<bool,Allocator>& x);<br />
|
||
T template <class InputIterator><br />
|
||
void assign(InputIterator first, InputIterator last);<br />
|
||
T void assign(size_type n, const T& t);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// capacity:<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
T void resize(size_type sz, bool c = false);<br />
|
||
T size_type capacity() const;<br />
|
||
T bool empty() const;<br />
|
||
T void reserve(size_type n);<br />
|
||
// element access:<br />
|
||
T reference operator[](size_type n);<br />
|
||
T const_reference operator[](size_type n) const;<br />
|
||
T const_reference at(size_type n) const;<br />
|
||
T reference at(size_type n);<br />
|
||
T reference front();<br />
|
||
T const_reference front() const;<br />
|
||
T reference back();<br />
|
||
T const_reference back() const;<br />
|
||
// modifiers:<br />
|
||
T void push_back(const bool& x);<br />
|
||
T void pop_back();<br />
|
||
T iterator insert(iterator position, const bool& x);<br />
|
||
T void insert (iterator position, size_type n, const bool& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert(iterator position,<br />
|
||
InputIterator first, InputIterator last);<br />
|
||
T iterator erase(iterator position);<br />
|
||
T iterator erase(iterator first, iterator last);<br />
|
||
T void swap(vector<bool,Allocator>&);<br />
|
||
T static void swap(reference x, reference y);<br />
|
||
T void flip(); // flips all bits<br />
|
||
T void clear();<br />
|
||
};<br />
|
||
<br />
|
||
T template <class Allocator><br />
|
||
bool operator==(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator< (const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator!=(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator> (const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator>=(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
T template <class Allocator><br />
|
||
bool operator<=(const vector<bool,Allocator>& x,<br />
|
||
const vector<bool,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class Allocator><br />
|
||
void swap(vector<bool,Allocator>& x, vector<bool,Allocator>& y);<br />
|
||
<br />
|
||
23.3 Associative containers [lib.associative]<br />
|
||
<br />
|
||
<map> and <set>:<br />
|
||
<br />
|
||
Header <map> synopsis<br />
|
||
<br />
|
||
template <class Key, class T, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<pair<const Key, T> > ><br />
|
||
T class map;<br />
|
||
<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator==(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator< (const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator!=(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator> (const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator>=(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator<=(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
void swap(map<Key,T,Compare,Allocator>& x,<br />
|
||
map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<pair<const Key, T> > ><br />
|
||
class multimap;<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator==(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator< (const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator!=(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator> (const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator>=(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator<=(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
void swap(multimap<Key,T,Compare,Allocator>& x,<br />
|
||
multimap<Key,T,Compare,Allocator>& y);<br />
|
||
}<br />
|
||
<br />
|
||
Header <set> synopsis<br />
|
||
<br />
|
||
template <class Key, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<Key> ><br />
|
||
T class set;<br />
|
||
<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator==(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator< (const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator!=(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator> (const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator>=(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator<=(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
void swap(set<Key,Compare,Allocator>& x,<br />
|
||
set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<Key> ><br />
|
||
class multiset;<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator==(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator< (const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator!=(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator> (const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator>=(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator<=(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
void swap(multiset<Key,Compare,Allocator>& x,<br />
|
||
multiset<Key,Compare,Allocator>& y);<br />
|
||
}<br />
|
||
<br />
|
||
23.3.1 Template class map [lib.map]<br />
|
||
<br />
|
||
template <class Key, class T, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<pair<const Key, T> > ><br />
|
||
T class map {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef Key key_type;<br />
|
||
T typedef T mapped_type;<br />
|
||
T typedef pair<const Key, T> value_type;<br />
|
||
T typedef Compare key_compare;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type;<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer;<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
T class value_compare<br />
|
||
: public binary_function<value_type,value_type,bool> {<br />
|
||
friend class map;<br />
|
||
protected:<br />
|
||
T Compare comp;<br />
|
||
T value_compare(Compare c) : comp(c) {}<br />
|
||
public:<br />
|
||
T bool operator()(const value_type& x, const value_type& y) const {<br />
|
||
return comp(x.first, y.first);<br />
|
||
}<br />
|
||
};<br />
|
||
<br />
|
||
// _lib.map.cons_ construct/copy/destroy:<br />
|
||
T explicit map(const Compare& comp = Compare(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
map(InputIterator first, InputIterator last,<br />
|
||
const Compare& comp = Compare(), const Allocator& = Allocator());<br />
|
||
T map(const map<Key,T,Compare,Allocator>& x);<br />
|
||
T ~map();<br />
|
||
T map<Key,T,Compare,Allocator>&<br />
|
||
operator=(const map<Key,T,Compare,Allocator>& x);<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// capacity:<br />
|
||
T bool empty() const;<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
// _lib.map.access_ element access:<br />
|
||
T T& operator[](const key_type& x);<br />
|
||
// modifiers:<br />
|
||
T pair<iterator, bool> insert(const value_type& x);<br />
|
||
T iterator insert(iterator position, const value_type& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert(InputIterator first, InputIterator last);<br />
|
||
T void erase(iterator position);<br />
|
||
T size_type erase(const key_type& x);<br />
|
||
T void erase(iterator first, iterator last);<br />
|
||
T void swap(map<Key,T,Compare,Allocator>&);<br />
|
||
T void clear();<br />
|
||
// observers:<br />
|
||
T key_compare key_comp() const;<br />
|
||
T value_compare value_comp() const;<br />
|
||
// _lib.map.ops_ map operations:<br />
|
||
T iterator find(const key_type& x);<br />
|
||
T const_iterator find(const key_type& x) const;<br />
|
||
T size_type count(const key_type& x) const;<br />
|
||
T iterator lower_bound(const key_type& x);<br />
|
||
T const_iterator lower_bound(const key_type& x) const;<br />
|
||
T iterator upper_bound(const key_type& x);<br />
|
||
T const_iterator upper_bound(const key_type& x) const;<br />
|
||
T pair<iterator,iterator><br />
|
||
equal_range(const key_type& x);<br />
|
||
T pair<const_iterator,const_iterator><br />
|
||
equal_range(const key_type& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator==(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator< (const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator!=(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator> (const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator>=(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator<=(const map<Key,T,Compare,Allocator>& x,<br />
|
||
const map<Key,T,Compare,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
void swap(map<Key,T,Compare,Allocator>& x,<br />
|
||
map<Key,T,Compare,Allocator>& y);<br />
|
||
<br />
|
||
23.3.2 Template class multimap [lib.multimap]<br />
|
||
<br />
|
||
template <class Key, class T, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<pair<const Key, T> > ><br />
|
||
T class multimap {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef Key key_type;<br />
|
||
T typedef T mapped_type;<br />
|
||
T typedef pair<const Key,T> value_type;<br />
|
||
T typedef Compare key_compare;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer;<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
T class value_compare<br />
|
||
: public binary_function<value_type,value_type,bool> {<br />
|
||
friend class multimap;<br />
|
||
protected:<br />
|
||
T Compare comp;<br />
|
||
T value_compare(Compare c) : comp(c) {}<br />
|
||
public:<br />
|
||
T bool operator()(const value_type& x, const value_type& y) const {<br />
|
||
return comp(x.first, y.first);<br />
|
||
}<br />
|
||
};<br />
|
||
// construct/copy/destroy:<br />
|
||
T explicit multimap(const Compare& comp = Compare(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
multimap(InputIterator first, InputIterator last,<br />
|
||
const Compare& comp = Compare(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T multimap(const multimap<Key,T,Compare,Allocator>& x);<br />
|
||
T ~multimap();<br />
|
||
T multimap<Key,T,Compare,Allocator>&<br />
|
||
operator=(const multimap<Key,T,Compare,Allocator>& x);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// capacity:<br />
|
||
T bool empty() const;<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
// modifiers:<br />
|
||
T iterator insert(const value_type& x);<br />
|
||
T iterator insert(iterator position, const value_type& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert(InputIterator first, InputIterator last);<br />
|
||
T void erase(iterator position);<br />
|
||
T size_type erase(const key_type& x);<br />
|
||
T void erase(iterator first, iterator last);<br />
|
||
T void swap(multimap<Key,T,Compare,Allocator>&);<br />
|
||
T void clear();<br />
|
||
// observers:<br />
|
||
T key_compare key_comp() const;<br />
|
||
T value_compare value_comp() const;<br />
|
||
// map operations:<br />
|
||
T iterator find(const key_type& x);<br />
|
||
T const_iterator find(const key_type& x) const;<br />
|
||
T size_type count(const key_type& x) const;<br />
|
||
T iterator lower_bound(const key_type& x);<br />
|
||
T const_iterator lower_bound(const key_type& x) const;<br />
|
||
T iterator upper_bound(const key_type& x);<br />
|
||
T const_iterator upper_bound(const key_type& x) const;<br />
|
||
T pair<iterator,iterator> equal_range(const key_type& x);<br />
|
||
T pair<const_iterator,const_iterator> equal_range(const key_type& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator==(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator< (const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator!=(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator> (const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator>=(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
bool operator<=(const multimap<Key,T,Compare,Allocator>& x,<br />
|
||
const multimap<Key,T,Compare,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class Key, class T, class Compare, class Allocator><br />
|
||
void swap(multimap<Key,T,Compare,Allocator>& x,<br />
|
||
multimap<Key,T,Compare,Allocator>& y);<br />
|
||
<br />
|
||
<br />
|
||
23.3.3 Template class set [lib.set]<br />
|
||
<br />
|
||
template <class Key, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<Key> ><br />
|
||
T class set {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef Key key_type;<br />
|
||
T typedef Key value_type;<br />
|
||
T typedef Compare key_compare;<br />
|
||
T typedef Compare value_compare;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type;<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer;<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
// _lib.set.cons_ construct/copy/destroy:<br />
|
||
T explicit set(const Compare& comp = Compare(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
set(InputIterator first, InputIterator last,<br />
|
||
const Compare& comp = Compare(), const Allocator& = Allocator());<br />
|
||
T set(const set<Key,Compare,Allocator>& x);<br />
|
||
T ~set();<br />
|
||
T set<Key,Compare,Allocator>&<br />
|
||
operator=(const set<Key,Compare,Allocator>& x);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// capacity:<br />
|
||
T bool empty() const;<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
// modifiers:<br />
|
||
T pair<iterator,bool> insert(const value_type& x);<br />
|
||
T iterator insert(iterator position, const value_type& x);<br />
|
||
T template <class InputIterator><br />
|
||
T void insert(InputIterator first, InputIterator last);<br />
|
||
T void erase(iterator position);<br />
|
||
T size_type erase(const key_type& x);<br />
|
||
T void erase(iterator first, iterator last);<br />
|
||
T void swap(set<Key,Compare,Allocator>&);<br />
|
||
T void clear();<br />
|
||
<br />
|
||
// observers:<br />
|
||
T key_compare key_comp() const;<br />
|
||
T value_compare value_comp() const;<br />
|
||
// set operations:<br />
|
||
T iterator find(const key_type& x) const;<br />
|
||
T size_type count(const key_type& x) const;<br />
|
||
T iterator lower_bound(const key_type& x) const;<br />
|
||
T iterator upper_bound(const key_type& x) const;<br />
|
||
T pair<iterator,iterator> equal_range(const key_type& x) const;<br />
|
||
};<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator==(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator< (const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator!=(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator> (const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator>=(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator<=(const set<Key,Compare,Allocator>& x,<br />
|
||
const set<Key,Compare,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
void swap(set<Key,Compare,Allocator>& x,<br />
|
||
set<Key,Compare,Allocator>& y);<br />
|
||
<br />
|
||
23.3.4 Template class multiset [lib.multiset]<br />
|
||
<br />
|
||
template <class Key, class Compare = less<Key>,<br />
|
||
class Allocator = allocator<Key> ><br />
|
||
T class multiset {<br />
|
||
public:<br />
|
||
// types:<br />
|
||
T typedef Key key_type;<br />
|
||
T typedef Key value_type;<br />
|
||
T typedef Compare key_compare;<br />
|
||
T typedef Compare value_compare;<br />
|
||
T typedef Allocator allocator_type;<br />
|
||
T typedef typename Allocator::reference reference;<br />
|
||
T typedef typename Allocator::const_reference const_reference;<br />
|
||
T typedef implementation defined iterator;<br />
|
||
T typedef implementation defined const_iterator;<br />
|
||
T typedef implementation defined size_type;<br />
|
||
T typedef implementation defined difference_type<br />
|
||
T typedef typename Allocator::pointer pointer;<br />
|
||
T typedef typename Allocator::const_pointer const_pointer;<br />
|
||
T typedef std::reverse_iterator<iterator> reverse_iterator;<br />
|
||
T typedef std::reverse_iterator<const_iterator> const_reverse_iterator;<br />
|
||
<br />
|
||
// construct/copy/destroy:<br />
|
||
T explicit multiset(const Compare& comp = Compare(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T template <class InputIterator><br />
|
||
multiset(InputIterator first, InputIterator last,<br />
|
||
const Compare& comp = Compare(),<br />
|
||
const Allocator& = Allocator());<br />
|
||
T multiset(const multiset<Key,Compare,Allocator>& x);<br />
|
||
T ~multiset();<br />
|
||
T multiset<Key,Compare,Allocator>&<br />
|
||
operator=(const multiset<Key,Compare,Allocator>& x);<br />
|
||
T allocator_type get_allocator() const;<br />
|
||
// iterators:<br />
|
||
T iterator begin();<br />
|
||
T const_iterator begin() const;<br />
|
||
T iterator end();<br />
|
||
T const_iterator end() const;<br />
|
||
T reverse_iterator rbegin();<br />
|
||
T const_reverse_iterator rbegin() const;<br />
|
||
T reverse_iterator rend();<br />
|
||
T const_reverse_iterator rend() const;<br />
|
||
// capacity:<br />
|
||
T bool empty() const;<br />
|
||
T size_type size() const;<br />
|
||
T size_type max_size() const;<br />
|
||
// modifiers:<br />
|
||
T iterator insert(const value_type& x);<br />
|
||
T iterator insert(iterator position, const value_type& x);<br />
|
||
T template <class InputIterator><br />
|
||
void insert(InputIterator first, InputIterator last);<br />
|
||
T void erase(iterator position);<br />
|
||
T size_type erase(const key_type& x);<br />
|
||
T void erase(iterator first, iterator last);<br />
|
||
T void swap(multiset<Key,Compare,Allocator>&);<br />
|
||
T void clear();<br />
|
||
// observers:<br />
|
||
T key_compare key_comp() const;<br />
|
||
T value_compare value_comp() const;<br />
|
||
// set operations:<br />
|
||
T iterator find(const key_type& x) const;<br />
|
||
T size_type count(const key_type& x) const;<br />
|
||
T iterator lower_bound(const key_type& x) const;<br />
|
||
T iterator upper_bound(const key_type& x) const;<br />
|
||
T pair<iterator,iterator> equal_range(const key_type& x) const;<br />
|
||
};<br />
|
||
<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator==(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator< (const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator!=(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator> (const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator>=(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
bool operator<=(const multiset<Key,Compare,Allocator>& x,<br />
|
||
const multiset<Key,Compare,Allocator>& y);<br />
|
||
// specialized algorithms:<br />
|
||
T template <class Key, class Compare, class Allocator><br />
|
||
void swap(multiset<Key,Compare,Allocator>& x,<br />
|
||
multiset<Key,Compare,Allocator>& y);<br />
|
||
<br />
|
||
23.3.5 Template class bitset [lib.template.bitset]<br />
|
||
<br />
|
||
Header <bitset> synopsis<br />
|
||
<br />
|
||
T template <size_t N> class bitset;<br />
|
||
// _lib.bitset.operators_ bitset operations:<br />
|
||
T template <size_t N><br />
|
||
bitset<N> operator&(const bitset<N>&, const bitset<N>&);<br />
|
||
T template <size_t N><br />
|
||
bitset<N> operator|(const bitset<N>&, const bitset<N>&);<br />
|
||
T template <size_t N><br />
|
||
bitset<N> operator^(const bitset<N>&, const bitset<N>&);<br />
|
||
T template <class charT, class traits, size_t N><br />
|
||
basic_istream<charT, traits>&<br />
|
||
operator>>(basic_istream<charT, traits>& is, bitset<N>& x);<br />
|
||
T template <class charT, class traits, size_t N><br />
|
||
basic_ostream<charT, traits>&<br />
|
||
operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x);<br />
|
||
<br />
|
||
T template<size_t N> class bitset {<br />
|
||
public:<br />
|
||
// bit reference:<br />
|
||
T class reference {<br />
|
||
friend class bitset;<br />
|
||
T reference();<br />
|
||
public:<br />
|
||
T ~reference();<br />
|
||
T reference& operator=(bool x); // for b[i] = x;<br />
|
||
T reference& operator=(const reference&); // for b[i] = b[j];<br />
|
||
T bool operator~() const; // flips the bit<br />
|
||
T operator bool() const; // for x = b[i];<br />
|
||
T reference& flip(); // for b[i].flip();<br />
|
||
};<br />
|
||
<br />
|
||
// _lib.bitset.cons_ constructors:<br />
|
||
T bitset();<br />
|
||
T bitset(unsigned long val);<br />
|
||
T template<class charT, class traits, class Allocator><br />
|
||
explicit bitset(<br />
|
||
const basic_string<charT,traits,Allocator>& str,<br />
|
||
typename basic_string<charT,traits,Allocator>::size_type pos = 0,<br />
|
||
typename basic_string<charT,traits,Allocator>::size_type n =<br />
|
||
basic_string<charT,traits,Allocator>::npos);<br />
|
||
// _lib.bitset.members_ bitset operations:<br />
|
||
T bitset<N>& operator&=(const bitset<N>& rhs);<br />
|
||
T bitset<N>& operator|=(const bitset<N>& rhs);<br />
|
||
T bitset<N>& operator^=(const bitset<N>& rhs);<br />
|
||
T bitset<N>& operator<<=(size_t pos);<br />
|
||
T bitset<N>& operator>>=(size_t pos);<br />
|
||
T bitset<N>& set();<br />
|
||
T bitset<N>& set(size_t pos, int val = true);<br />
|
||
T bitset<N>& reset();<br />
|
||
T bitset<N>& reset(size_t pos);<br />
|
||
T bitset<N> operator~() const;<br />
|
||
T bitset<N>& flip();<br />
|
||
T bitset<N>& flip(size_t pos);<br />
|
||
// element access:<br />
|
||
T reference operator[](size_t pos); // for b[i];<br />
|
||
T unsigned long to_ulong() const;<br />
|
||
T template <class charT, class traits, class Allocator><br />
|
||
basic_string<charT, traits, Allocator> to_string() const;<br />
|
||
T size_t count() const;<br />
|
||
T size_t size() const;<br />
|
||
T bool operator==(const bitset<N>& rhs) const;<br />
|
||
T bool operator!=(const bitset<N>& rhs) const;<br />
|
||
T bool test(size_t pos) const;<br />
|
||
T bool any() const;<br />
|
||
T bool none() const;<br />
|
||
T bitset<N> operator<<(size_t pos) const;<br />
|
||
T bitset<N> operator>>(size_t pos) const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
24.2 Header <iterator> synopsis [lib.iterator.synopsis]<br />
|
||
<br />
|
||
// _lib.iterator.primitives_, primitives:<br />
|
||
T template<class Iterator> struct iterator_traits;<br />
|
||
T template<class T> struct iterator_traits<T*>;<br />
|
||
<br />
|
||
X template<class Category, class T, class Distance = ptrdiff_t,<br />
|
||
class Pointer = T*, class Reference = T&> struct iterator;<br />
|
||
T struct input_iterator_tag {};<br />
|
||
T struct output_iterator_tag {};<br />
|
||
T struct forward_iterator_tag: public input_iterator_tag {};<br />
|
||
T struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
|
||
T struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
|
||
// _lib.iterator.operations_, iterator operations:<br />
|
||
T template <class InputIterator, class Distance><br />
|
||
void advance(InputIterator& i, Distance n);<br />
|
||
T template <class InputIterator><br />
|
||
typename iterator_traits<InputIterator>::difference_type<br />
|
||
distance(InputIterator first, InputIterator last);<br />
|
||
// _lib.predef.iterators_, predefined iterators:<br />
|
||
X template <class Iterator> class reverse_iterator;<br />
|
||
T template <class Iterator><br />
|
||
bool operator==(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator<(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator!=(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator>(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator>=(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator<=(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
typename reverse_iterator<Iterator>::difference_type operator-(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
reverse_iterator<Iterator><br />
|
||
operator+(<br />
|
||
typename reverse_iterator<Iterator>::difference_type n,<br />
|
||
const reverse_iterator<Iterator>& x);<br />
|
||
<br />
|
||
X template <class Container> class back_insert_iterator;<br />
|
||
T template <class Container><br />
|
||
back_insert_iterator<Container> back_inserter(Container& x);<br />
|
||
X template <class Container> class front_insert_iterator;<br />
|
||
T template <class Container><br />
|
||
front_insert_iterator<Container> front_inserter(Container& x);<br />
|
||
X template <class Container> class insert_iterator;<br />
|
||
T template <class Container, class Iterator><br />
|
||
insert_iterator<Container> inserter(Container& x, Iterator i);<br />
|
||
// _lib.stream.iterators_, stream iterators:<br />
|
||
X template <class T, class charT = char, class traits = char_traits<charT>,<br />
|
||
class Distance = ptrdiff_t><br />
|
||
class istream_iterator;<br />
|
||
template <class T, class charT, class traits, class Distance><br />
|
||
X bool operator==(const istream_iterator<T,charT,traits,Distance>& x,<br />
|
||
const istream_iterator<T,charT,traits,Distance>& y);<br />
|
||
template <class T, class charT, class traits, class Distance><br />
|
||
X bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,<br />
|
||
const istream_iterator<T,charT,traits,Distance>& y);<br />
|
||
X template <class T, class charT = char, class traits = char_traits<charT> ><br />
|
||
class ostream_iterator;<br />
|
||
X template<class charT, class traits = char_traits<charT> ><br />
|
||
class istreambuf_iterator;<br />
|
||
X template <class charT, class traits><br />
|
||
bool operator==(const istreambuf_iterator<charT,traits>& a,<br />
|
||
const istreambuf_iterator<charT,traits>& b);<br />
|
||
X template <class charT, class traits><br />
|
||
bool operator!=(const istreambuf_iterator<charT,traits>& a,<br />
|
||
const istreambuf_iterator<charT,traits>& b);<br />
|
||
T template <class charT, class traits = char_traits<charT> ><br />
|
||
class ostreambuf_iterator;<br />
|
||
<br />
|
||
24.3 Iterator primitives [lib.iterator.primitives]<br />
|
||
<br />
|
||
T template<class Iterator> struct iterator_traits {<br />
|
||
T typedef typename Iterator::difference_type difference_type;<br />
|
||
T typedef typename Iterator::value_type value_type;<br />
|
||
T typedef typename Iterator::pointer pointer;<br />
|
||
T typedef typename Iterator::reference reference;<br />
|
||
T typedef typename Iterator::iterator_category iterator_category;<br />
|
||
};<br />
|
||
<br />
|
||
T template<class T> struct iterator_traits<T*> {<br />
|
||
T typedef ptrdiff_t difference_type;<br />
|
||
T typedef T value_type;<br />
|
||
T typedef T* pointer;<br />
|
||
T typedef T& reference;<br />
|
||
T typedef random_access_iterator_tag iterator_category;<br />
|
||
};<br />
|
||
<br />
|
||
T template<class T> struct iterator_traits<const T*> {<br />
|
||
T typedef ptrdiff_t difference_type;<br />
|
||
T typedef T value_type;<br />
|
||
T typedef const T* pointer;<br />
|
||
T typedef const T& reference;<br />
|
||
T typedef random_access_iterator_tag iterator_category;<br />
|
||
};<br />
|
||
<br />
|
||
24.3.2 Basic iterator [lib.iterator.basic]<br />
|
||
<br />
|
||
template<class Category, class T, class Distance = ptrdiff_t,<br />
|
||
class Pointer = T*, class Reference = T&><br />
|
||
X struct iterator {<br />
|
||
T typedef T value_type;<br />
|
||
T typedef Distance difference_type;<br />
|
||
T typedef Pointer pointer;<br />
|
||
T typedef Reference reference;<br />
|
||
T typedef Category iterator_category;<br />
|
||
};<br />
|
||
<br />
|
||
24.3.3 Standard iterator tags [lib.std.iterator.tags]<br />
|
||
<br />
|
||
T struct input_iterator_tag {};<br />
|
||
T struct output_iterator_tag {};<br />
|
||
T struct forward_iterator_tag: public input_iterator_tag {};<br />
|
||
T struct bidirectional_iterator_tag: public forward_iterator_tag {};<br />
|
||
T struct random_access_iterator_tag: public bidirectional_iterator_tag {};<br />
|
||
<br />
|
||
<br />
|
||
24.4.1 Reverse iterators [lib.reverse.iterators]<br />
|
||
<br />
|
||
template <class Iterator><br />
|
||
X class reverse_iterator : public<br />
|
||
iterator<typename iterator_traits<Iterator>::iterator_category,<br />
|
||
typename iterator_traits<Iterator>::value_type,<br />
|
||
typename iterator_traits<Iterator>::difference_type,<br />
|
||
typename iterator_traits<Iterator>::pointer,<br />
|
||
typename iterator_traits<Iterator>::reference> {<br />
|
||
protected:<br />
|
||
T Iterator current;<br />
|
||
public:<br />
|
||
T typedef Iterator<br />
|
||
iterator_type;<br />
|
||
T typedef typename iterator_traits<Iterator>::difference_type<br />
|
||
difference_type;<br />
|
||
T typedef typename iterator_traits<Iterator>::reference<br />
|
||
reference;<br />
|
||
T typedef typename iterator_traits<Iterator>::pointer<br />
|
||
pointer;<br />
|
||
<br />
|
||
T reverse_iterator();<br />
|
||
T explicit reverse_iterator(Iterator x);<br />
|
||
T template <class U> reverse_iterator(const reverse_iterator<U>& u);<br />
|
||
T Iterator base() const; // explicit<br />
|
||
T reference operator*() const;<br />
|
||
T pointer operator->() const;<br />
|
||
T reverse_iterator& operator++();<br />
|
||
T reverse_iterator operator++(int);<br />
|
||
T reverse_iterator& operator--();<br />
|
||
T reverse_iterator operator--(int);<br />
|
||
<br />
|
||
T reverse_iterator operator+ (difference_type n) const;<br />
|
||
T reverse_iterator& operator+=(difference_type n);<br />
|
||
T reverse_iterator operator- (difference_type n) const;<br />
|
||
T reverse_iterator& operator-=(difference_type n);<br />
|
||
T reference operator[](difference_type n) const;<br />
|
||
};<br />
|
||
T template <class Iterator><br />
|
||
bool operator==(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator<(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator!=(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator>(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator>=(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
bool operator<=(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
typename reverse_iterator<Iterator>::difference_type operator-(<br />
|
||
const reverse_iterator<Iterator>& x,<br />
|
||
const reverse_iterator<Iterator>& y);<br />
|
||
T template <class Iterator><br />
|
||
reverse_iterator<Iterator> operator+(<br />
|
||
typename reverse_iterator<Iterator>::difference_type n,<br />
|
||
const reverse_iterator<Iterator>& x);<br />
|
||
<br />
|
||
<br />
|
||
24.4.2.1 Template class [lib.back.insert.iterator]<br />
|
||
back_insert_iterator<br />
|
||
<br />
|
||
template <class Container><br />
|
||
X class back_insert_iterator :<br />
|
||
public iterator<output_iterator_tag,void,void,void,void> {<br />
|
||
protected:<br />
|
||
T Container* container;<br />
|
||
public:<br />
|
||
T typedef Container container_type;<br />
|
||
T explicit back_insert_iterator(Container& x);<br />
|
||
T back_insert_iterator<Container>&<br />
|
||
operator=(typename Container::const_reference value);<br />
|
||
<br />
|
||
T back_insert_iterator<Container>& operator*();<br />
|
||
T back_insert_iterator<Container>& operator++();<br />
|
||
T back_insert_iterator<Container> operator++(int);<br />
|
||
};<br />
|
||
T template <class Container><br />
|
||
back_insert_iterator<Container> back_inserter(Container& x);<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
24.4.2.3 Template class [lib.front.insert.iterator]<br />
|
||
front_insert_iterator<br />
|
||
<br />
|
||
template <class Container><br />
|
||
X class front_insert_iterator :<br />
|
||
public iterator<output_iterator_tag,void,void,void,void> {<br />
|
||
protected:<br />
|
||
T Container* container;<br />
|
||
public:<br />
|
||
T typedef Container container_type;<br />
|
||
T explicit front_insert_iterator(Container& x);<br />
|
||
T front_insert_iterator<Container>&<br />
|
||
operator=(typename Container::const_reference value);<br />
|
||
T front_insert_iterator<Container>& operator*();<br />
|
||
T front_insert_iterator<Container>& operator++();<br />
|
||
T front_insert_iterator<Container> operator++(int);<br />
|
||
};<br />
|
||
T template <class Container><br />
|
||
front_insert_iterator<Container> front_inserter(Container& x);<br />
|
||
<br />
|
||
<br />
|
||
24.4.2.5 Template class insert_iterator [lib.insert.iterator]<br />
|
||
<br />
|
||
template <class Container><br />
|
||
X class insert_iterator :<br />
|
||
public iterator<output_iterator_tag,void,void,void,void> {<br />
|
||
protected:<br />
|
||
T Container* container;<br />
|
||
T typename Container::iterator iter;<br />
|
||
public:<br />
|
||
T typedef Container container_type;<br />
|
||
T insert_iterator(Container& x, typename Container::iterator i);<br />
|
||
T insert_iterator<Container>&<br />
|
||
operator=(typename Container::const_reference value);<br />
|
||
T insert_iterator<Container>& operator*();<br />
|
||
T insert_iterator<Container>& operator++();<br />
|
||
T insert_iterator<Container>& operator++(int);<br />
|
||
};<br />
|
||
T template <class Container, class Iterator><br />
|
||
insert_iterator<Container> inserter(Container& x, Iterator i);<br />
|
||
<br />
|
||
24.5.1 Template class istream_iterator [lib.istream.iterator]<br />
|
||
<br />
|
||
template <class T, class charT = char, class traits = char_traits<charT>,<br />
|
||
class Distance = ptrdiff_t><br />
|
||
X class istream_iterator:<br />
|
||
public iterator<input_iterator_tag, T, Distance, const T*, const T&> {<br />
|
||
public:<br />
|
||
T typedef charT char_type<br />
|
||
T typedef traits traits_type;<br />
|
||
T typedef basic_istream<charT,traits> istream_type;<br />
|
||
T istream_iterator();<br />
|
||
T istream_iterator(istream_type& s);<br />
|
||
T istream_iterator(const istream_iterator<T,charT,traits,Distance>& x);<br />
|
||
T ~istream_iterator();<br />
|
||
<br />
|
||
T const T& operator*() const;<br />
|
||
T const T* operator->() const;<br />
|
||
T istream_iterator<T,charT,traits,Distance>& operator++();<br />
|
||
T istream_iterator<T,charT,traits,Distance> operator++(int);<br />
|
||
};<br />
|
||
<br />
|
||
T template <class T, class charT, class traits, class Distance><br />
|
||
bool operator==(const istream_iterator<T,charT,traits,Distance>& x,<br />
|
||
const istream_iterator<T,charT,traits,Distance>& y);<br />
|
||
T template <class T, class charT, class traits, class Distance><br />
|
||
bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,<br />
|
||
const istream_iterator<T,charT,traits,Distance>& y);<br />
|
||
<br />
|
||
<br />
|
||
24.5.2 Template class ostream_iterator [lib.ostream.iterator]<br />
|
||
<br />
|
||
template <class T, class charT = char, class traits = char_traits<charT> ><br />
|
||
X class ostream_iterator:<br />
|
||
public iterator<output_iterator_tag, void, void, void, void> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
T typedef basic_ostream<charT,traits> ostream_type;<br />
|
||
T ostream_iterator(ostream_type& s);<br />
|
||
T ostream_iterator(ostream_type& s, const charT* delimiter);<br />
|
||
T ostream_iterator(const ostream_iterator<T,charT,traits>& x);<br />
|
||
T ~ostream_iterator();<br />
|
||
T ostream_iterator<T,charT,traits>& operator=(const T& value);<br />
|
||
<br />
|
||
T ostream_iterator<T,charT,traits>& operator*();<br />
|
||
T ostream_iterator<T,charT,traits>& operator++();<br />
|
||
T ostream_iterator<T,charT,traits>& operator++(int);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
24.5.3 Template class [lib.istreambuf.iterator]<br />
|
||
istreambuf_iterator<br />
|
||
<br />
|
||
template<class charT, class traits = char_traits<charT> ><br />
|
||
X class istreambuf_iterator<br />
|
||
: public iterator<input_iterator_tag, charT,<br />
|
||
typename traits::off_type, charT*, charT&> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef basic_streambuf<charT,traits> streambuf_type;<br />
|
||
T typedef basic_istream<charT,traits> istream_type;<br />
|
||
T class proxy; // exposition only<br />
|
||
T istreambuf_iterator() throw();<br />
|
||
T istreambuf_iterator(istream_type& s) throw();<br />
|
||
T istreambuf_iterator(streambuf_type* s) throw();<br />
|
||
T istreambuf_iterator(const proxy& p) throw();<br />
|
||
T charT operator*() const;<br />
|
||
T istreambuf_iterator<charT,traits>& operator++();<br />
|
||
T proxy operator++(int);<br />
|
||
X bool equal(istreambuf_iterator& b);<br />
|
||
};<br />
|
||
<br />
|
||
T template <class charT, class traits><br />
|
||
bool operator==(const istreambuf_iterator<charT,traits>& a,<br />
|
||
const istreambuf_iterator<charT,traits>& b);<br />
|
||
<br />
|
||
T template <class charT, class traits><br />
|
||
bool operator!=(const istreambuf_iterator<charT,traits>& a,<br />
|
||
const istreambuf_iterator<charT,traits>& b);<br />
|
||
<br />
|
||
24.5.3.1 Template class [lib.istreambuf.iterator::proxy]<br />
|
||
istreambuf_iterator::proxy<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
T class istreambuf_iterator<charT, traits>::proxy<br />
|
||
{<br />
|
||
T charT keep_;<br />
|
||
T basic_streambuf<charT,traits>* sbuf_;<br />
|
||
T proxy(charT c,<br />
|
||
basic_streambuf<charT,traits>* sbuf);<br />
|
||
: keep_(c), sbuf_(sbuf) {}<br />
|
||
public:<br />
|
||
T charT operator*() { return keep_; }<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
24.5.4 Template class [lib.ostreambuf.iterator]<br />
|
||
ostreambuf_iterator<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
T class ostreambuf_iterator:<br />
|
||
public iterator<output_iterator_tag, void, void, void, void> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
T typedef basic_streambuf<charT,traits> streambuf_type;<br />
|
||
T typedef basic_ostream<charT,traits> ostream_type;<br />
|
||
public:<br />
|
||
T ostreambuf_iterator(ostream_type& s) throw();<br />
|
||
T ostreambuf_iterator(streambuf_type* s) throw();<br />
|
||
T ostreambuf_iterator& operator=(charT c);<br />
|
||
T ostreambuf_iterator& operator*();<br />
|
||
T ostreambuf_iterator& operator++();<br />
|
||
T ostreambuf_iterator& operator++(int);<br />
|
||
T bool failed() const throw();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
Header <algorithm> synopsis<br />
|
||
<br />
|
||
<br />
|
||
// _lib.alg.nonmodifying_, non-modifying sequence operations:<br />
|
||
T template<class InputIterator, class Function><br />
|
||
Function for_each(InputIterator first, InputIterator last, Function f);<br />
|
||
T template<class InputIterator, class T><br />
|
||
InputIterator find(InputIterator first, InputIterator last,<br />
|
||
const T& value);<br />
|
||
T template<class InputIterator, class Predicate><br />
|
||
InputIterator find_if(InputIterator first, InputIterator last,<br />
|
||
Predicate pred);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2><br />
|
||
ForwardIterator1<br />
|
||
find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
|
||
ForwardIterator2 first2, ForwardIterator2 last2);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2,<br />
|
||
class BinaryPredicate><br />
|
||
ForwardIterator1<br />
|
||
find_end(ForwardIterator1 first1, ForwardIterator1 last1,<br />
|
||
ForwardIterator2 first2, ForwardIterator2 last2,<br />
|
||
BinaryPredicate pred);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2><br />
|
||
ForwardIterator1<br />
|
||
find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
|
||
ForwardIterator2 first2, ForwardIterator2 last2);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2,<br />
|
||
class BinaryPredicate><br />
|
||
ForwardIterator1<br />
|
||
find_first_of(ForwardIterator1 first1, ForwardIterator1 last1,<br />
|
||
ForwardIterator2 first2, ForwardIterator2 last2,<br />
|
||
BinaryPredicate pred);<br />
|
||
T template<class ForwardIterator><br />
|
||
ForwardIterator adjacent_find(ForwardIterator first,<br />
|
||
ForwardIterator last);<br />
|
||
T template<class ForwardIterator, class BinaryPredicate><br />
|
||
ForwardIterator adjacent_find(ForwardIterator first,<br />
|
||
ForwardIterator last, BinaryPredicate pred);<br />
|
||
T template<class InputIterator, class T><br />
|
||
typename iterator_traits<InputIterator>::difference_type<br />
|
||
count(InputIterator first, InputIterator last, const T& value);<br />
|
||
T template<class InputIterator, class Predicate><br />
|
||
typename iterator_traits<InputIterator>::difference_type<br />
|
||
count_if(InputIterator first, InputIterator last, Predicate pred);<br />
|
||
T template<class InputIterator1, class InputIterator2><br />
|
||
pair<InputIterator1, InputIterator2><br />
|
||
mismatch(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2);<br />
|
||
T template<class InputIterator1, class InputIterator2, class BinaryPredicate><br />
|
||
pair<InputIterator1, InputIterator2><br />
|
||
mismatch(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, BinaryPredicate pred);<br />
|
||
<br />
|
||
T template<class InputIterator1, class InputIterator2><br />
|
||
bool equal(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2);<br />
|
||
T template<class InputIterator1, class InputIterator2, class BinaryPredicate><br />
|
||
bool equal(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, BinaryPredicate pred);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2><br />
|
||
ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
|
||
ForwardIterator2 first2, ForwardIterator2 last2);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2,<br />
|
||
class BinaryPredicate><br />
|
||
ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,<br />
|
||
ForwardIterator2 first2, ForwardIterator2 last2,<br />
|
||
BinaryPredicate pred);<br />
|
||
T template<class ForwardIterator, class Size, class T><br />
|
||
ForwardIterator search_n(ForwardIterator first, ForwardIterator last,<br />
|
||
Size count, const T& value);<br />
|
||
T template<class ForwardIterator, class Size, class T, class BinaryPredicate><br />
|
||
ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last,<br />
|
||
Size count, const T& value,<br />
|
||
BinaryPredicate pred);<br />
|
||
// _lib.alg.modifying.operations_, modifying sequence operations:<br />
|
||
// _lib.alg.copy_, copy:<br />
|
||
T template<class InputIterator, class OutputIterator><br />
|
||
OutputIterator copy(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result);<br />
|
||
T template<class BidirectionalIterator1, class BidirectionalIterator2><br />
|
||
BidirectionalIterator2<br />
|
||
copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last,<br />
|
||
BidirectionalIterator2 result);<br />
|
||
// _lib.alg.swap_, swap:<br />
|
||
T template<class T> void swap(T& a, T& b);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2><br />
|
||
ForwardIterator2 swap_ranges(ForwardIterator1 first1,<br />
|
||
ForwardIterator1 last1, ForwardIterator2 first2);<br />
|
||
T template<class ForwardIterator1, class ForwardIterator2><br />
|
||
void iter_swap(ForwardIterator1 a, ForwardIterator2 b);<br />
|
||
T template<class InputIterator, class OutputIterator, class UnaryOperation><br />
|
||
OutputIterator transform(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result, UnaryOperation op);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
|
||
class BinaryOperation><br />
|
||
OutputIterator transform(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, OutputIterator result,<br />
|
||
BinaryOperation binary_op);<br />
|
||
<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
void replace(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& old_value, const T& new_value);<br />
|
||
T template<class ForwardIterator, class Predicate, class T><br />
|
||
void replace_if(ForwardIterator first, ForwardIterator last,<br />
|
||
Predicate pred, const T& new_value);<br />
|
||
T template<class InputIterator, class OutputIterator, class T><br />
|
||
OutputIterator replace_copy(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result,<br />
|
||
const T& old_value, const T& new_value);<br />
|
||
T template<class Iterator, class OutputIterator, class Predicate, class T><br />
|
||
OutputIterator replace_copy_if(Iterator first, Iterator last,<br />
|
||
OutputIterator result,<br />
|
||
Predicate pred, const T& new_value);<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
void fill(ForwardIterator first, ForwardIterator last, const T& value);<br />
|
||
T template<class OutputIterator, class Size, class T><br />
|
||
void fill_n(OutputIterator first, Size n, const T& value);<br />
|
||
T template<class ForwardIterator, class Generator><br />
|
||
void generate(ForwardIterator first, ForwardIterator last, Generator gen);<br />
|
||
T template<class OutputIterator, class Size, class Generator><br />
|
||
void generate_n(OutputIterator first, Size n, Generator gen);<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
ForwardIterator remove(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value);<br />
|
||
T template<class ForwardIterator, class Predicate><br />
|
||
ForwardIterator remove_if(ForwardIterator first, ForwardIterator last,<br />
|
||
Predicate pred);<br />
|
||
T template<class InputIterator, class OutputIterator, class T><br />
|
||
OutputIterator remove_copy(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result, const T& value);<br />
|
||
T template<class InputIterator, class OutputIterator, class Predicate><br />
|
||
OutputIterator remove_copy_if(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result, Predicate pred);<br />
|
||
T template<class ForwardIterator><br />
|
||
ForwardIterator unique(ForwardIterator first, ForwardIterator last);<br />
|
||
T template<class ForwardIterator, class BinaryPredicate><br />
|
||
ForwardIterator unique(ForwardIterator first, ForwardIterator last,<br />
|
||
BinaryPredicate pred);<br />
|
||
T template<class InputIterator, class OutputIterator><br />
|
||
OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result);<br />
|
||
T template<class InputIterator, class OutputIterator, class BinaryPredicate><br />
|
||
OutputIterator unique_copy(InputIterator first, InputIterator last,<br />
|
||
OutputIterator result, BinaryPredicate pred);<br />
|
||
T template<class BidirectionalIterator><br />
|
||
void reverse(BidirectionalIterator first, BidirectionalIterator last);<br />
|
||
T template<class BidirectionalIterator, class OutputIterator><br />
|
||
OutputIterator reverse_copy(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last,<br />
|
||
OutputIterator result);<br />
|
||
<br />
|
||
T template<class ForwardIterator><br />
|
||
void rotate(ForwardIterator first, ForwardIterator middle,<br />
|
||
ForwardIterator last);<br />
|
||
T template<class ForwardIterator, class OutputIterator><br />
|
||
OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle,<br />
|
||
ForwardIterator last, OutputIterator result);<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void random_shuffle(RandomAccessIterator first,<br />
|
||
RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class RandomNumberGenerator><br />
|
||
void random_shuffle(RandomAccessIterator first,<br />
|
||
RandomAccessIterator last,<br />
|
||
RandomNumberGenerator& rand);<br />
|
||
// _lib.alg.partitions_, partitions:<br />
|
||
T template<class BidirectionalIterator, class Predicate><br />
|
||
BidirectionalIterator partition(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last,<br />
|
||
Predicate pred);<br />
|
||
T template<class BidirectionalIterator, class Predicate><br />
|
||
BidirectionalIterator stable_partition(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last,<br />
|
||
Predicate pred);<br />
|
||
// _lib.alg.sorting_, sorting and related operations:<br />
|
||
// _lib.alg.sort_, sorting:<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void sort(RandomAccessIterator first, RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void sort(RandomAccessIterator first, RandomAccessIterator last,<br />
|
||
Compare comp);<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void stable_sort(RandomAccessIterator first, RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void stable_sort(RandomAccessIterator first, RandomAccessIterator last,<br />
|
||
Compare comp);<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void partial_sort(RandomAccessIterator first,<br />
|
||
RandomAccessIterator middle,<br />
|
||
RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void partial_sort(RandomAccessIterator first,<br />
|
||
RandomAccessIterator middle,<br />
|
||
RandomAccessIterator last, Compare comp);<br />
|
||
T template<class InputIterator, class RandomAccessIterator><br />
|
||
RandomAccessIterator<br />
|
||
partial_sort_copy(InputIterator first, InputIterator last,<br />
|
||
RandomAccessIterator result_first,<br />
|
||
RandomAccessIterator result_last);<br />
|
||
T template<class InputIterator, class RandomAccessIterator, class Compare><br />
|
||
RandomAccessIterator<br />
|
||
partial_sort_copy(InputIterator first, InputIterator last,<br />
|
||
RandomAccessIterator result_first,<br />
|
||
RandomAccessIterator result_last,<br />
|
||
Compare comp);<br />
|
||
<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
|
||
RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void nth_element(RandomAccessIterator first, RandomAccessIterator nth,<br />
|
||
RandomAccessIterator last, Compare comp);<br />
|
||
// _lib.alg.binary.search_, binary search:<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value);<br />
|
||
T template<class ForwardIterator, class T, class Compare><br />
|
||
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value, Compare comp);<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value);<br />
|
||
T template<class ForwardIterator, class T, class Compare><br />
|
||
ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value, Compare comp);<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
pair<ForwardIterator, ForwardIterator><br />
|
||
equal_range(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value);<br />
|
||
T template<class ForwardIterator, class T, class Compare><br />
|
||
pair<ForwardIterator, ForwardIterator><br />
|
||
equal_range(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value, Compare comp);<br />
|
||
T template<class ForwardIterator, class T><br />
|
||
bool binary_search(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value);<br />
|
||
T template<class ForwardIterator, class T, class Compare><br />
|
||
bool binary_search(ForwardIterator first, ForwardIterator last,<br />
|
||
const T& value, Compare comp);<br />
|
||
// _lib.alg.merge_, merge:<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
|
||
OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
|
||
class Compare><br />
|
||
OutputIterator merge(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result, Compare comp);<br />
|
||
T template<class BidirectionalIterator><br />
|
||
void inplace_merge(BidirectionalIterator first,<br />
|
||
BidirectionalIterator middle,<br />
|
||
BidirectionalIterator last);<br />
|
||
T template<class BidirectionalIterator, class Compare><br />
|
||
void inplace_merge(BidirectionalIterator first,<br />
|
||
BidirectionalIterator middle,<br />
|
||
BidirectionalIterator last, Compare comp);<br />
|
||
<br />
|
||
// _lib.alg.set.operations_, set operations:<br />
|
||
T template<class InputIterator1, class InputIterator2><br />
|
||
bool includes(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2);<br />
|
||
T template<class InputIterator1, class InputIterator2, class Compare><br />
|
||
bool includes(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2, Compare comp);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
|
||
OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
|
||
class Compare><br />
|
||
OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result, Compare comp);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
|
||
OutputIterator set_intersection<br />
|
||
(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
|
||
class Compare><br />
|
||
OutputIterator set_intersection<br />
|
||
(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result, Compare comp);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
|
||
OutputIterator set_difference<br />
|
||
(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
|
||
class Compare><br />
|
||
OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result, Compare comp);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator><br />
|
||
OutputIterator<br />
|
||
set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result);<br />
|
||
T template<class InputIterator1, class InputIterator2, class OutputIterator,<br />
|
||
class Compare><br />
|
||
OutputIterator<br />
|
||
set_symmetric_difference(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
OutputIterator result, Compare comp);<br />
|
||
// _lib.alg.heap.operations_, heap operations:<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void push_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void push_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
|
||
Compare comp);<br />
|
||
<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void pop_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void pop_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
|
||
Compare comp);<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void make_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void make_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
|
||
Compare comp);<br />
|
||
T template<class RandomAccessIterator><br />
|
||
void sort_heap(RandomAccessIterator first, RandomAccessIterator last);<br />
|
||
T template<class RandomAccessIterator, class Compare><br />
|
||
void sort_heap(RandomAccessIterator first, RandomAccessIterator last,<br />
|
||
Compare comp);<br />
|
||
// _lib.alg.min.max_, minimum and maximum:<br />
|
||
T template<class T> const T& min(const T& a, const T& b);<br />
|
||
T template<class T, class Compare><br />
|
||
const T& min(const T& a, const T& b, Compare comp);<br />
|
||
T template<class T> const T& max(const T& a, const T& b);<br />
|
||
T template<class T, class Compare><br />
|
||
const T& max(const T& a, const T& b, Compare comp);<br />
|
||
T template<class ForwardIterator><br />
|
||
ForwardIterator min_element(ForwardIterator first, ForwardIterator last);<br />
|
||
T template<class ForwardIterator, class Compare><br />
|
||
ForwardIterator min_element(ForwardIterator first, ForwardIterator last,<br />
|
||
Compare comp);<br />
|
||
T template<class ForwardIterator><br />
|
||
ForwardIterator max_element(ForwardIterator first, ForwardIterator last);<br />
|
||
T template<class ForwardIterator, class Compare><br />
|
||
ForwardIterator max_element(ForwardIterator first, ForwardIterator last,<br />
|
||
Compare comp);<br />
|
||
T template<class InputIterator1, class InputIterator2><br />
|
||
bool lexicographical_compare<br />
|
||
(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2);<br />
|
||
T template<class InputIterator1, class InputIterator2, class Compare><br />
|
||
bool lexicographical_compare<br />
|
||
(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, InputIterator2 last2,<br />
|
||
Compare comp);<br />
|
||
<br />
|
||
// _lib.alg.permutation.generators_, permutations<br />
|
||
T template<class BidirectionalIterator><br />
|
||
bool next_permutation(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last);<br />
|
||
T template<class BidirectionalIterator, class Compare><br />
|
||
bool next_permutation(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last, Compare comp);<br />
|
||
T template<class BidirectionalIterator><br />
|
||
bool prev_permutation(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last);<br />
|
||
T template<class BidirectionalIterator, class Compare><br />
|
||
bool prev_permutation(BidirectionalIterator first,<br />
|
||
BidirectionalIterator last, Compare comp);<br />
|
||
<br />
|
||
<br />
|
||
25.4 C library algorithms [lib.alg.c.library]<br />
|
||
<br />
|
||
1 Header <cstdlib> (partial, Table 2):<br />
|
||
<br />
|
||
Table 2--Header <cstdlib> synopsis<br />
|
||
<br />
|
||
Functions: bsearch qsort<br />
|
||
<br />
|
||
<br />
|
||
X extern "C" void *bsearch(const void *key, const void *base,<br />
|
||
size_t nmemb, size_t size,<br />
|
||
int (*compar)(const void *, const void *));<br />
|
||
X extern "C++" void *bsearch(const void *key, const void *base,<br />
|
||
size_t nmemb, size_t size,<br />
|
||
int (*compar)(const void *, const void *));<br />
|
||
<br />
|
||
X extern "C" void qsort(void* base, size_t nmemb, size_t size,<br />
|
||
int (*compar)(const void*, const void*));<br />
|
||
X extern "C++" void qsort(void* base, size_t nmemb, size_t size,<br />
|
||
int (*compar)(const void*, const void*));<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
26.2 Complex numbers [lib.complex.numbers]<br />
|
||
<br />
|
||
<br />
|
||
26.2.1 Header <complex> synopsis [lib.complex.synopsis]<br />
|
||
<br />
|
||
T template<class T> class complex;<br />
|
||
T template<> class complex<float>;<br />
|
||
T template<> class complex<double>;<br />
|
||
T template<> class complex<long double>;<br />
|
||
// _lib.complex.ops_ operators:<br />
|
||
T template<class T><br />
|
||
complex<T> operator+(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator+(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator+(const T&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator-<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator-(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator-(const T&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator*<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator*(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator*(const T&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator/<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator/(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator/(const T&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator+(const complex<T>&);<br />
|
||
T template<class T> complex<T> operator-(const complex<T>&);<br />
|
||
T template<class T> bool operator==<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> bool operator==(const complex<T>&, const T&);<br />
|
||
T template<class T> bool operator==(const T&, const complex<T>&);<br />
|
||
T template<class T> bool operator!=(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> bool operator!=(const complex<T>&, const T&);<br />
|
||
T template<class T> bool operator!=(const T&, const complex<T>&);<br />
|
||
T template<class T, class charT, class traits><br />
|
||
basic_istream<charT, traits>&<br />
|
||
operator>>(basic_istream<charT, traits>&, complex<T>&);<br />
|
||
<br />
|
||
T template<class T, class charT, class traits><br />
|
||
basic_ostream<charT, traits>&<br />
|
||
operator<<(basic_ostream<charT, traits>&, const complex<T>&);<br />
|
||
// _lib.complex.value.ops_ values:<br />
|
||
T template<class T> T real(const complex<T>&);<br />
|
||
T template<class T> T imag(const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> T abs(const complex<T>&);<br />
|
||
T template<class T> T arg(const complex<T>&);<br />
|
||
T template<class T> T norm(const complex<T>&);<br />
|
||
T template<class T> complex<T> conj(const complex<T>&);<br />
|
||
T template<class T> complex<T> polar(const T&, const T&);<br />
|
||
// _lib.complex.transcendentals_ transcendentals:<br />
|
||
T template<class T> complex<T> cos (const complex<T>&);<br />
|
||
T template<class T> complex<T> cosh (const complex<T>&);<br />
|
||
T template<class T> complex<T> exp (const complex<T>&);<br />
|
||
T template<class T> complex<T> log (const complex<T>&);<br />
|
||
T template<class T> complex<T> log10(const complex<T>&);<br />
|
||
T template<class T> complex<T> pow(const complex<T>&, int);<br />
|
||
T template<class T> complex<T> pow(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> pow(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> pow(const T&, const complex<T>&);<br />
|
||
T template<class T> complex<T> sin (const complex<T>&);<br />
|
||
T template<class T> complex<T> sinh (const complex<T>&);<br />
|
||
T template<class T> complex<T> sqrt (const complex<T>&);<br />
|
||
T template<class T> complex<T> tan (const complex<T>&);<br />
|
||
T template<class T> complex<T> tanh (const complex<T>&);<br />
|
||
}<br />
|
||
<br />
|
||
26.2.2 Template class complex [lib.complex]<br />
|
||
<br />
|
||
template<class T><br />
|
||
T class complex {<br />
|
||
public:<br />
|
||
T typedef T value_type;<br />
|
||
<br />
|
||
T complex(const T& re = T(), const T& im = T());<br />
|
||
T complex(const complex&);<br />
|
||
T template<class X> complex(const complex<X>&);<br />
|
||
<br />
|
||
T T real() const;<br />
|
||
T T imag() const;<br />
|
||
<br />
|
||
T complex<T>& operator= (const T&);<br />
|
||
T complex<T>& operator+=(const T&);<br />
|
||
T complex<T>& operator-=(const T&);<br />
|
||
T complex<T>& operator*=(const T&);<br />
|
||
T complex<T>& operator/=(const T&);<br />
|
||
<br />
|
||
T complex& operator=(const complex&);<br />
|
||
T template<class X> complex<T>& operator= (const complex<X>&);<br />
|
||
T template<class X> complex<T>& operator+=(const complex<X>&);<br />
|
||
T template<class X> complex<T>& operator-=(const complex<X>&);<br />
|
||
T template<class X> complex<T>& operator*=(const complex<X>&);<br />
|
||
T template<class X> complex<T>& operator/=(const complex<X>&);<br />
|
||
};<br />
|
||
<br />
|
||
T template<class T> complex<T> operator+<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator+(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator+(const T&, const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> complex<T> operator-<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator-(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator-(const T&, const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> complex<T> operator*<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator*(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator*(const T&, const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> complex<T> operator/<br />
|
||
(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> complex<T> operator/(const complex<T>&, const T&);<br />
|
||
T template<class T> complex<T> operator/(const T&, const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> complex<T> operator+(const complex<T>&);<br />
|
||
T template<class T> complex<T> operator-(const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> bool operator==(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> bool operator==(const complex<T>&, const T&);<br />
|
||
T template<class T> bool operator==(const T&, const complex<T>&);<br />
|
||
<br />
|
||
T template<class T> bool operator!=(const complex<T>&, const complex<T>&);<br />
|
||
T template<class T> bool operator!=(const complex<T>&, const T&);<br />
|
||
T template<class T> bool operator!=(const T&, const complex<T>&);<br />
|
||
<br />
|
||
T template<class T, class charT, class traits><br />
|
||
basic_istream<charT, traits>&<br />
|
||
operator>>(basic_istream<charT, traits>&, complex<T>&);<br />
|
||
<br />
|
||
T template<class T, class charT, class traits><br />
|
||
basic_ostream<charT, traits>&<br />
|
||
operator<<(basic_ostream<charT, traits>&, const complex<T>&);<br />
|
||
<br />
|
||
<br />
|
||
26.2.3 complex specializations [lib.complex.special]<br />
|
||
<br />
|
||
T template<> class complex<float> {<br />
|
||
public:<br />
|
||
T typedef float value_type;<br />
|
||
<br />
|
||
T complex(float re = 0.0f, float im = 0.0f);<br />
|
||
T explicit complex(const complex<double>&);<br />
|
||
T explicit complex(const complex<long double>&);<br />
|
||
T float real() const;<br />
|
||
T float imag() const;<br />
|
||
<br />
|
||
T complex<float>& operator= (float);<br />
|
||
T complex<float>& operator+=(float);<br />
|
||
T complex<float>& operator-=(float);<br />
|
||
T complex<float>& operator*=(float);<br />
|
||
T complex<float>& operator/=(float);<br />
|
||
<br />
|
||
T complex<float>& operator=(const complex<float>&);<br />
|
||
T template<class X> complex<float>& operator= (const complex<X>&);<br />
|
||
T template<class X> complex<float>& operator+=(const complex<X>&);<br />
|
||
T template<class X> complex<float>& operator-=(const complex<X>&);<br />
|
||
T template<class X> complex<float>& operator*=(const complex<X>&);<br />
|
||
T template<class X> complex<float>& operator/=(const complex<X>&);<br />
|
||
};<br />
|
||
T template<> class complex<double> {<br />
|
||
public:<br />
|
||
T typedef double value_type;<br />
|
||
<br />
|
||
T complex(double re = 0.0, double im = 0.0);<br />
|
||
T complex(const complex<float>&);<br />
|
||
T explicit complex(const complex<long double>&);<br />
|
||
T double real() const;<br />
|
||
T double imag() const;<br />
|
||
<br />
|
||
T complex<double>& operator= (double);<br />
|
||
T complex<double>& operator+=(double);<br />
|
||
T complex<double>& operator-=(double);<br />
|
||
T complex<double>& operator*=(double);<br />
|
||
T complex<double>& operator/=(double);<br />
|
||
<br />
|
||
T complex<double>& operator=(const complex<double>&);<br />
|
||
T template<class X> complex<double>& operator= (const complex<X>&);<br />
|
||
T template<class X> complex<double>& operator+=(const complex<X>&);<br />
|
||
T template<class X> complex<double>& operator-=(const complex<X>&);<br />
|
||
T template<class X> complex<double>& operator*=(const complex<X>&);<br />
|
||
T template<class X> complex<double>& operator/=(const complex<X>&);<br />
|
||
};<br />
|
||
<br />
|
||
T template<> class complex<long double> {<br />
|
||
public:<br />
|
||
T typedef long double value_type;<br />
|
||
<br />
|
||
T complex(long double re = 0.0L, long double im = 0.0L);<br />
|
||
T complex(const complex<float>&);<br />
|
||
T complex(const complex<double>&);<br />
|
||
T long double real() const;<br />
|
||
T long double imag() const;<br />
|
||
<br />
|
||
T complex<long double>& operator=(const complex<long double>&);<br />
|
||
T complex<long double>& operator= (long double);<br />
|
||
T complex<long double>& operator+=(long double);<br />
|
||
T complex<long double>& operator-=(long double);<br />
|
||
T complex<long double>& operator*=(long double);<br />
|
||
T complex<long double>& operator/=(long double);<br />
|
||
<br />
|
||
T template<class X> complex<long double>& operator= (const complex<X>&);<br />
|
||
T template<class X> complex<long double>& operator+=(const complex<X>&);<br />
|
||
T template<class X> complex<long double>& operator-=(const complex<X>&);<br />
|
||
T template<class X> complex<long double>& operator*=(const complex<X>&);<br />
|
||
T template<class X> complex<long double>& operator/=(const complex<X>&);<br />
|
||
};<br />
|
||
<br />
|
||
26.3 Numeric arrays [lib.numarray]<br />
|
||
<br />
|
||
26.3.1 Header <valarray> synopsis [lib.valarray.synopsis]<br />
|
||
<br />
|
||
T template<class T> class valarray; // An array of type T<br />
|
||
T class slice;<br />
|
||
T template<class T> class slice_array;<br />
|
||
T class gslice;<br />
|
||
T template<class T> class gslice_array;<br />
|
||
T template<class T> class mask_array; // a masked array<br />
|
||
T template<class T> class indirect_array; // an indirected array<br />
|
||
<br />
|
||
T template<class T> valarray<T> operator*<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator* (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator* (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator/<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator/ (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator/ (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator%<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator% (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator% (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator+<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator+ (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator+ (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator-<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator- (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator- (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator^<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator^ (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator^ (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator&<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator& (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator& (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator|<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator| (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator| (const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator<<<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator<<(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator<<(const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator>><br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> operator>>(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> operator>>(const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator&&<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator&&(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator&&(const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator||<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator||(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator||(const T&, const valarray<T>&);<br />
|
||
<br />
|
||
T template<class T><br />
|
||
valarray<bool> operator==(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator==(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator==(const T&, const valarray<T>&);<br />
|
||
T template<class T><br />
|
||
valarray<bool> operator!=(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator!=(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator!=(const T&, const valarray<T>&);<br />
|
||
T template<class T><br />
|
||
valarray<bool> operator< (const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator< (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator< (const T&, const valarray<T>&);<br />
|
||
T template<class T><br />
|
||
valarray<bool> operator> (const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator> (const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator> (const T&, const valarray<T>&);<br />
|
||
T template<class T><br />
|
||
valarray<bool> operator<=(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator<=(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator<=(const T&, const valarray<T>&);<br />
|
||
T template<class T><br />
|
||
valarray<bool> operator>=(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<bool> operator>=(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<bool> operator>=(const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> abs (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> acos (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> asin (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> atan (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> atan2<br />
|
||
(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> atan2(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> atan2(const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> cos (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> cosh (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> exp (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> log (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> log10(const valarray<T>&);<br />
|
||
T template<class T> valarray<T> pow(const valarray<T>&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> pow(const valarray<T>&, const T&);<br />
|
||
T template<class T> valarray<T> pow(const T&, const valarray<T>&);<br />
|
||
T template<class T> valarray<T> sin (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> sinh (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> sqrt (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> tan (const valarray<T>&);<br />
|
||
T template<class T> valarray<T> tanh (const valarray<T>&);<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
26.3.2 Template class valarray [lib.template.valarray]<br />
|
||
<br />
|
||
T template<class T> class valarray {<br />
|
||
public:<br />
|
||
T typedef T value_type;<br />
|
||
<br />
|
||
// _lib.valarray.cons_ construct/destroy:<br />
|
||
T valarray();<br />
|
||
T explicit valarray(size_t);<br />
|
||
T valarray(const T&, size_t);<br />
|
||
T valarray(const T*, size_t);<br />
|
||
T valarray(const valarray&);<br />
|
||
T valarray(const slice_array<T>&);<br />
|
||
T valarray(const gslice_array<T>&);<br />
|
||
T valarray(const mask_array<T>&);<br />
|
||
T valarray(const indirect_array<T>&);<br />
|
||
T ~valarray();<br />
|
||
<br />
|
||
// _lib.valarray.assign_ assignment:<br />
|
||
T valarray<T>& operator=(const valarray<T>&);<br />
|
||
T valarray<T>& operator=(const T&);<br />
|
||
T valarray<T>& operator=(const slice_array<T>&);<br />
|
||
T valarray<T>& operator=(const gslice_array<T>&);<br />
|
||
T valarray<T>& operator=(const mask_array<T>&);<br />
|
||
T valarray<T>& operator=(const indirect_array<T>&);<br />
|
||
// _lib.valarray.access_ element access:<br />
|
||
T T operator[](size_t) const;<br />
|
||
T T& operator[](size_t);<br />
|
||
// _lib.valarray.sub_ subset operations:<br />
|
||
T valarray<T> operator[](slice) const;<br />
|
||
T slice_array<T> operator[](slice);<br />
|
||
T valarray<T> operator[](const gslice&) const;<br />
|
||
T gslice_array<T> operator[](const gslice&);<br />
|
||
T valarray<T> operator[](const valarray<bool>&) const;<br />
|
||
T mask_array<T> operator[](const valarray<bool>&);<br />
|
||
T valarray<T> operator[](const valarray<size_t>&) const;<br />
|
||
T indirect_array<T> operator[](const valarray<size_t>&);<br />
|
||
// _lib.valarray.unary_ unary operators:<br />
|
||
T valarray<T> operator+() const;<br />
|
||
T valarray<T> operator-() const;<br />
|
||
T valarray<T> operator~() const;<br />
|
||
T valarray<T> operator!() const;<br />
|
||
// _lib.valarray.cassign_ computed assignment:<br />
|
||
T valarray<T>& operator*= (const T&);<br />
|
||
T valarray<T>& operator/= (const T&);<br />
|
||
T valarray<T>& operator%= (const T&);<br />
|
||
T valarray<T>& operator+= (const T&);<br />
|
||
T valarray<T>& operator-= (const T&);<br />
|
||
T valarray<T>& operator^= (const T&);<br />
|
||
T valarray<T>& operator&= (const T&);<br />
|
||
T valarray<T>& operator|= (const T&);<br />
|
||
T valarray<T>& operator<<=(const T&);<br />
|
||
T valarray<T>& operator>>=(const T&);<br />
|
||
T valarray<T>& operator*= (const valarray<T>&);<br />
|
||
T valarray<T>& operator/= (const valarray<T>&);<br />
|
||
T valarray<T>& operator%= (const valarray<T>&);<br />
|
||
T valarray<T>& operator+= (const valarray<T>&);<br />
|
||
T valarray<T>& operator-= (const valarray<T>&);<br />
|
||
T valarray<T>& operator^= (const valarray<T>&);<br />
|
||
T valarray<T>& operator|= (const valarray<T>&);<br />
|
||
T valarray<T>& operator&= (const valarray<T>&);<br />
|
||
T valarray<T>& operator<<=(const valarray<T>&);<br />
|
||
T valarray<T>& operator>>=(const valarray<T>&);<br />
|
||
// _lib.valarray.members_ member functions:<br />
|
||
T size_t size() const;<br />
|
||
T T sum() const;<br />
|
||
T T min() const;<br />
|
||
T T max() const;<br />
|
||
<br />
|
||
T valarray<T> shift (int) const;<br />
|
||
T valarray<T> cshift(int) const;<br />
|
||
T valarray<T> apply(T func(T)) const;<br />
|
||
T valarray<T> apply(T func(const T&)) const;<br />
|
||
T void resize(size_t sz, T c = T());<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
26.3.4 Class slice [lib.class.slice]<br />
|
||
<br />
|
||
T class slice {<br />
|
||
public:<br />
|
||
T slice();<br />
|
||
T slice(size_t, size_t, size_t);<br />
|
||
<br />
|
||
T size_t start() const;<br />
|
||
T size_t size() const;<br />
|
||
T size_t stride() const;<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
26.3.5 Template class slice_array [lib.template.slice.array]<br />
|
||
<br />
|
||
T template <class T> class slice_array {<br />
|
||
public:<br />
|
||
T typedef T value_type;<br />
|
||
<br />
|
||
T void operator= (const valarray<T>&) const;<br />
|
||
T void operator*= (const valarray<T>&) const;<br />
|
||
T void operator/= (const valarray<T>&) const;<br />
|
||
T void operator%= (const valarray<T>&) const;<br />
|
||
T void operator+= (const valarray<T>&) const;<br />
|
||
T void operator-= (const valarray<T>&) const;<br />
|
||
T void operator^= (const valarray<T>&) const;<br />
|
||
T void operator&= (const valarray<T>&) const;<br />
|
||
T void operator|= (const valarray<T>&) const;<br />
|
||
T void operator<<=(const valarray<T>&) const;<br />
|
||
T void operator>>=(const valarray<T>&) const;<br />
|
||
T void operator=(const T&);<br />
|
||
T ~slice_array();<br />
|
||
private:<br />
|
||
T slice_array();<br />
|
||
T slice_array(const slice_array&);<br />
|
||
T slice_array& operator=(const slice_array&);<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
26.3.6 The gslice class [lib.class.gslice]<br />
|
||
<br />
|
||
T class gslice {<br />
|
||
public:<br />
|
||
T gslice();<br />
|
||
T gslice(size_t s, const valarray<size_t>& l, const valarray<size_t>& d);<br />
|
||
<br />
|
||
T size_t start() const;<br />
|
||
T valarray<size_t> size() const;<br />
|
||
T valarray<size_t> stride() const;<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
26.3.7 Template class gslice_array [lib.template.gslice.array]<br />
|
||
<br />
|
||
T template <class T> class gslice_array {<br />
|
||
public:<br />
|
||
T typedef T value_type;<br />
|
||
<br />
|
||
T void operator= (const valarray<T>&) const;<br />
|
||
T void operator*= (const valarray<T>&) const;<br />
|
||
T void operator/= (const valarray<T>&) const;<br />
|
||
T void operator%= (const valarray<T>&) const;<br />
|
||
T void operator+= (const valarray<T>&) const;<br />
|
||
T void operator-= (const valarray<T>&) const;<br />
|
||
T void operator^= (const valarray<T>&) const;<br />
|
||
T void operator&= (const valarray<T>&) const;<br />
|
||
T void operator|= (const valarray<T>&) const;<br />
|
||
T void operator<<=(const valarray<T>&) const;<br />
|
||
T void operator>>=(const valarray<T>&) const;<br />
|
||
T void operator=(const T&);<br />
|
||
T ~gslice_array();<br />
|
||
private:<br />
|
||
T gslice_array();<br />
|
||
T gslice_array(const gslice_array&);<br />
|
||
T gslice_array& operator=(const gslice_array&);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
26.3.8 Template class mask_array [lib.template.mask.array]<br />
|
||
<br />
|
||
T template <class T> class mask_array {<br />
|
||
public:<br />
|
||
T typedef T value_type;<br />
|
||
<br />
|
||
T void operator= (const valarray<T>&) const;<br />
|
||
T void operator*= (const valarray<T>&) const;<br />
|
||
T void operator/= (const valarray<T>&) const;<br />
|
||
T void operator%= (const valarray<T>&) const;<br />
|
||
T void operator+= (const valarray<T>&) const;<br />
|
||
T void operator-= (const valarray<T>&) const;<br />
|
||
T void operator^= (const valarray<T>&) const;<br />
|
||
T void operator&= (const valarray<T>&) const;<br />
|
||
T void operator|= (const valarray<T>&) const;<br />
|
||
T void operator<<=(const valarray<T>&) const;<br />
|
||
T void operator>>=(const valarray<T>&) const;<br />
|
||
T void operator=(const T&);<br />
|
||
T ~mask_array();<br />
|
||
private:<br />
|
||
T mask_array();<br />
|
||
T mask_array(const mask_array&);<br />
|
||
T mask_array& operator=(const mask_array&);<br />
|
||
// remainder implementation defined<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
26.3.9 Template class [lib.template.indirect.array]<br />
|
||
indirect_array<br />
|
||
<br />
|
||
T template <class T> class indirect_array {<br />
|
||
public:<br />
|
||
T typedef T value_type;<br />
|
||
<br />
|
||
T void operator= (const valarray<T>&) const;<br />
|
||
T void operator*= (const valarray<T>&) const;<br />
|
||
T void operator/= (const valarray<T>&) const;<br />
|
||
T void operator%= (const valarray<T>&) const;<br />
|
||
T void operator+= (const valarray<T>&) const;<br />
|
||
T void operator-= (const valarray<T>&) const;<br />
|
||
T void operator^= (const valarray<T>&) const;<br />
|
||
T void operator&= (const valarray<T>&) const;<br />
|
||
T void operator|= (const valarray<T>&) const;<br />
|
||
T void operator<<=(const valarray<T>&) const;<br />
|
||
T void operator>>=(const valarray<T>&) const;<br />
|
||
T void operator=(const T&);<br />
|
||
T ~indirect_array();<br />
|
||
private:<br />
|
||
T indirect_array();<br />
|
||
T indirect_array(const indirect_array&);<br />
|
||
T indirect_array& operator=(const indirect_array&);<br />
|
||
// remainder implementation defined<br />
|
||
};<br />
|
||
<br />
|
||
26.4 Generalized numeric operations [lib.numeric.ops]<br />
|
||
<br />
|
||
Header <numeric> synopsis<br />
|
||
<br />
|
||
T template <class InputIterator, class T><br />
|
||
T accumulate(InputIterator first, InputIterator last, T init);<br />
|
||
<br />
|
||
T template <class InputIterator, class T, class BinaryOperation><br />
|
||
T accumulate(InputIterator first, InputIterator last, T init,<br />
|
||
BinaryOperation binary_op);<br />
|
||
<br />
|
||
T template <class InputIterator1, class InputIterator2, class T><br />
|
||
T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, T init);<br />
|
||
<br />
|
||
T template <class InputIterator1, class InputIterator2, class T,<br />
|
||
class BinaryOperation1, class BinaryOperation2><br />
|
||
T inner_product(InputIterator1 first1, InputIterator1 last1,<br />
|
||
InputIterator2 first2, T init,<br />
|
||
BinaryOperation1 binary_op1,<br />
|
||
BinaryOperation2 binary_op2);<br />
|
||
<br />
|
||
T template <class InputIterator, class OutputIterator><br />
|
||
OutputIterator partial_sum(InputIterator first,<br />
|
||
InputIterator last,<br />
|
||
OutputIterator result);<br />
|
||
<br />
|
||
T template <class InputIterator, class OutputIterator,<br />
|
||
class BinaryOperation><br />
|
||
OutputIterator partial_sum(InputIterator first,<br />
|
||
InputIterator last,<br />
|
||
OutputIterator result,<br />
|
||
BinaryOperation binary_op);<br />
|
||
<br />
|
||
T template <class InputIterator, class OutputIterator><br />
|
||
OutputIterator adjacent_difference(InputIterator first,<br />
|
||
InputIterator last,<br />
|
||
OutputIterator result);<br />
|
||
<br />
|
||
T template <class InputIterator, class OutputIterator,<br />
|
||
class BinaryOperation><br />
|
||
OutputIterator adjacent_difference(InputIterator first,<br />
|
||
InputIterator last,<br />
|
||
OutputIterator result,<br />
|
||
BinaryOperation binary_op);<br />
|
||
<br />
|
||
<br />
|
||
26.5 C Library [lib.c.math]<br />
|
||
<br />
|
||
Table 2--Header <cmath> synopsis<br />
|
||
X Macro: HUGE_VAL<br />
|
||
Functions:<br />
|
||
X acos cos fmod modf tan<br />
|
||
X asin cosh frexp pow tanh<br />
|
||
X atan exp ldexp sin<br />
|
||
X atan2 fabs log sinh<br />
|
||
X ceil floor log10 sqrt<br />
|
||
<br />
|
||
Table 3--Header <cstdlib> synopsis<br />
|
||
X Macros: RAND_MAX<br />
|
||
X Types: div_t ldiv_t<br />
|
||
Functions:<br />
|
||
X abs labs srand<br />
|
||
X div ldiv rand<br />
|
||
<br />
|
||
X long abs(long); // labs()<br />
|
||
X ldiv_t div(long, long); // ldiv()<br />
|
||
<br />
|
||
X float abs (float);<br />
|
||
X float acos (float);<br />
|
||
X float asin (float);<br />
|
||
X float atan (float);<br />
|
||
X float atan2(float, float);<br />
|
||
X float ceil (float);<br />
|
||
X float cos (float);<br />
|
||
X float cosh (float);<br />
|
||
X float exp (float);<br />
|
||
X float fabs (float);<br />
|
||
X float floor(float);<br />
|
||
X float fmod (float, float);<br />
|
||
X float frexp(float, int*);<br />
|
||
X float ldexp(float, int);<br />
|
||
X float log (float);<br />
|
||
X float log10(float);<br />
|
||
X float modf (float, float*);<br />
|
||
X float pow (float, float);<br />
|
||
X float pow (float, int);<br />
|
||
X float sin (float);<br />
|
||
X float sinh (float);<br />
|
||
X float sqrt (float);<br />
|
||
X float tan (float);<br />
|
||
X float tanh (float);<br />
|
||
<br />
|
||
X double abs(double); // fabs()<br />
|
||
X double pow(double, int);<br />
|
||
<br />
|
||
X long double abs (long double);<br />
|
||
X long double acos (long double);<br />
|
||
X long double asin (long double);<br />
|
||
X long double atan (long double);<br />
|
||
X long double atan2(long double, long double);<br />
|
||
X long double ceil (long double);<br />
|
||
X long double cos (long double);<br />
|
||
X long double cosh (long double);<br />
|
||
X long double exp (long double);<br />
|
||
X long double fabs (long double);<br />
|
||
X long double floor(long double);<br />
|
||
X long double fmod (long double, long double);<br />
|
||
X long double frexp(long double, int*);<br />
|
||
X long double ldexp(long double, int);<br />
|
||
X long double log (long double);<br />
|
||
X long double log10(long double);<br />
|
||
X long double modf (long double, long double*);<br />
|
||
X long double pow (long double, long double);<br />
|
||
X long double pow (long double, int);<br />
|
||
X long double sin (long double);<br />
|
||
X long double sinh (long double);<br />
|
||
X long double sqrt (long double);<br />
|
||
X long double tan (long double);<br />
|
||
X long double tanh (long double);<br />
|
||
<br />
|
||
Header <iosfwd> synopsis<br />
|
||
<br />
|
||
X template<class charT> class char_traits;<br />
|
||
X template<> class char_traits<char>;<br />
|
||
X template<> class char_traits<wchar_t>;<br />
|
||
X template<class T> class allocator;<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ios;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_streambuf;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_istream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ostream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_iostream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_stringbuf;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_istringstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_ostringstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_stringstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_filebuf;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ifstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ofstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_fstream;<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class istreambuf_iterator;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class ostreambuf_iterator;<br />
|
||
X typedef basic_ios<char> ios;<br />
|
||
X typedef basic_ios<wchar_t> wios;<br />
|
||
X typedef basic_streambuf<char> streambuf;<br />
|
||
X typedef basic_istream<char> istream;<br />
|
||
X typedef basic_ostream<char> ostream;<br />
|
||
X typedef basic_iostream<char> iostream;<br />
|
||
X typedef basic_stringbuf<char> stringbuf;<br />
|
||
X typedef basic_istringstream<char> istringstream;<br />
|
||
X typedef basic_ostringstream<char> ostringstream;<br />
|
||
X typedef basic_stringstream<char> stringstream;<br />
|
||
X typedef basic_filebuf<char> filebuf;<br />
|
||
X typedef basic_ifstream<char> ifstream;<br />
|
||
X typedef basic_ofstream<char> ofstream;<br />
|
||
X typedef basic_fstream<char> fstream;<br />
|
||
X typedef basic_streambuf<wchar_t> wstreambuf;<br />
|
||
X typedef basic_istream<wchar_t> wistream;<br />
|
||
X typedef basic_ostream<wchar_t> wostream;<br />
|
||
X typedef basic_iostream<wchar_t> wiostream;<br />
|
||
X typedef basic_stringbuf<wchar_t> wstringbuf;<br />
|
||
X typedef basic_istringstream<wchar_t> wistringstream;<br />
|
||
X typedef basic_ostringstream<wchar_t> wostringstream;<br />
|
||
X typedef basic_stringstream<wchar_t> wstringstream;<br />
|
||
<br />
|
||
X typedef basic_filebuf<wchar_t> wfilebuf;<br />
|
||
X typedef basic_ifstream<wchar_t> wifstream;<br />
|
||
X typedef basic_ofstream<wchar_t> wofstream;<br />
|
||
X typedef basic_fstream<wchar_t> wfstream;<br />
|
||
X template <class state> class fpos;<br />
|
||
X typedef fpos<char_traits<char>::state_type> streampos;<br />
|
||
X typedef fpos<char_traits<wchar_t>::state_type> wstreampos;<br />
|
||
<br />
|
||
27.3 Standard iostream objects [lib.iostream.objects]<br />
|
||
<br />
|
||
Header <iostream> synopsis<br />
|
||
<br />
|
||
T [must also include <istream> and <ostream>]<br />
|
||
T extern istream cin;<br />
|
||
T extern ostream cout;<br />
|
||
T extern ostream cerr;<br />
|
||
T extern ostream clog;<br />
|
||
<br />
|
||
T extern wistream wcin;<br />
|
||
T extern wostream wcout;<br />
|
||
T extern wostream wcerr;<br />
|
||
T extern wostream wclog;<br />
|
||
<br />
|
||
27.4 Iostreams base classes [lib.iostreams.base]<br />
|
||
<br />
|
||
Header <ios> synopsis<br />
|
||
<br />
|
||
#include <iosfwd><br />
|
||
<br />
|
||
T typedef OFF_T streamoff;<br />
|
||
T typedef SZ_T streamsize;<br />
|
||
T template <class stateT> class fpos;<br />
|
||
<br />
|
||
class ios_base;<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ios;<br />
|
||
// _lib.std.ios.manip_, manipulators:<br />
|
||
T ios_base& boolalpha (ios_base& str);<br />
|
||
T ios_base& noboolalpha(ios_base& str);<br />
|
||
T ios_base& showbase (ios_base& str);<br />
|
||
T ios_base& noshowbase (ios_base& str);<br />
|
||
T ios_base& showpoint (ios_base& str);<br />
|
||
T ios_base& noshowpoint(ios_base& str);<br />
|
||
T ios_base& showpos (ios_base& str);<br />
|
||
T ios_base& noshowpos (ios_base& str);<br />
|
||
T ios_base& skipws (ios_base& str);<br />
|
||
T ios_base& noskipws (ios_base& str);<br />
|
||
T ios_base& nouppercase(ios_base& str);<br />
|
||
T ios_base& uppercase (ios_base& str);<br />
|
||
M ios_base& unitbuf (ios_base& str);<br />
|
||
M ios_base& nounitbuf (ios_base& str);<br />
|
||
// _lib.adjustfield.manip_ adjustfield:<br />
|
||
T ios_base& internal (ios_base& str);<br />
|
||
T ios_base& left (ios_base& str);<br />
|
||
T ios_base& right (ios_base& str);<br />
|
||
// _lib.basefield.manip_ basefield:<br />
|
||
T ios_base& dec (ios_base& str);<br />
|
||
T ios_base& hex (ios_base& str);<br />
|
||
T ios_base& oct (ios_base& str);<br />
|
||
<br />
|
||
// _lib.floatfield.manip_ floatfield:<br />
|
||
T ios_base& fixed (ios_base& str);<br />
|
||
T ios_base& scientific (ios_base& str);<br />
|
||
<br />
|
||
<br />
|
||
27.4.2 Class ios_base [lib.ios.base]<br />
|
||
<br />
|
||
T class ios_base {<br />
|
||
public:<br />
|
||
class failure;<br />
|
||
T typedef T1 fmtflags;<br />
|
||
T static const fmtflags boolalpha;<br />
|
||
T static const fmtflags dec;<br />
|
||
T static const fmtflags fixed;<br />
|
||
T static const fmtflags hex;<br />
|
||
T static const fmtflags internal;<br />
|
||
T static const fmtflags left;<br />
|
||
T static const fmtflags oct;<br />
|
||
T static const fmtflags right;<br />
|
||
T static const fmtflags scientific;<br />
|
||
T static const fmtflags showbase;<br />
|
||
T static const fmtflags showpoint;<br />
|
||
T static const fmtflags showpos;<br />
|
||
T static const fmtflags skipws;<br />
|
||
X static const fmtflags unitbuf;<br />
|
||
T static const fmtflags uppercase;<br />
|
||
T static const fmtflags adjustfield;<br />
|
||
T static const fmtflags basefield;<br />
|
||
T static const fmtflags floatfield;<br />
|
||
<br />
|
||
typedef T2 iostate;<br />
|
||
T static const iostate badbit;<br />
|
||
T static const iostate eofbit;<br />
|
||
T static const iostate failbit;<br />
|
||
T static const iostate goodbit;<br />
|
||
T typedef T3 openmode;<br />
|
||
T static const openmode app;<br />
|
||
T static const openmode ate;<br />
|
||
T static const openmode binary;<br />
|
||
T static const openmode in;<br />
|
||
T static const openmode out;<br />
|
||
T static const openmode trunc;<br />
|
||
T typedef T4 seekdir;<br />
|
||
T static const seekdir beg;<br />
|
||
T static const seekdir cur;<br />
|
||
T static const seekdir end;<br />
|
||
T class Init;<br />
|
||
// _lib.fmtflags.state_ fmtflags state:<br />
|
||
T fmtflags flags() const;<br />
|
||
T fmtflags flags(fmtflags fmtfl);<br />
|
||
T fmtflags setf(fmtflags fmtfl);<br />
|
||
T fmtflags setf(fmtflags fmtfl, fmtflags mask);<br />
|
||
T void unsetf(fmtflags mask);<br />
|
||
T streamsize precision() const;<br />
|
||
T streamsize precision(streamsize prec);<br />
|
||
T streamsize width() const;<br />
|
||
T streamsize width(streamsize wide);<br />
|
||
// _lib.ios.base.locales_ locales:<br />
|
||
T locale imbue(const locale& loc);<br />
|
||
T locale getloc() const;<br />
|
||
// _lib.ios.base.storage_ storage:<br />
|
||
T static int xalloc();<br />
|
||
T long& iword(int index);<br />
|
||
T void*& pword(int index);<br />
|
||
// destructor<br />
|
||
T virtual ~ios_base();<br />
|
||
// _lib.ios.base.callback_ callbacks;<br />
|
||
T enum event { erase_event, imbue_event, copyfmt_event };<br />
|
||
T typedef void (*event_callback)(event, ios_base&, int index);<br />
|
||
T void register_callback(event_call_back fn, int index);<br />
|
||
T static bool sync_with_stdio(bool sync = true);<br />
|
||
protected:<br />
|
||
T ios_base();<br />
|
||
};<br />
|
||
<br />
|
||
27.4.2.1.1 Class ios_base::failure [lib.ios::failure]<br />
|
||
<br />
|
||
T class ios_base::failure : public exception {<br />
|
||
public:<br />
|
||
T explicit failure(const string& msg);<br />
|
||
T virtual ~failure();<br />
|
||
T virtual const char* what() const throw();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.4.2.1.6 Class ios_base::Init [lib.ios::Init]<br />
|
||
<br />
|
||
T class ios_base::Init {<br />
|
||
public:<br />
|
||
T Init();<br />
|
||
T ~Init();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.4.3 Template class fpos [lib.fpos]<br />
|
||
<br />
|
||
X template <class stateT> class fpos {<br />
|
||
public:<br />
|
||
// _lib.fpos.members_ Members<br />
|
||
T stateT state() const;<br />
|
||
T void state(stateT);<br />
|
||
private;<br />
|
||
T stateT st; // exposition only<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.4.5 Template class basic_ios [lib.ios]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
X class basic_ios : public ios_base {<br />
|
||
public:<br />
|
||
<br />
|
||
// Types:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
T operator void*() const<br />
|
||
T bool operator!() const<br />
|
||
T iostate rdstate() const;<br />
|
||
T void clear(iostate state = goodbit);<br />
|
||
T void setstate(iostate state);<br />
|
||
T bool good() const;<br />
|
||
T bool eof() const;<br />
|
||
T bool fail() const;<br />
|
||
T bool bad() const;<br />
|
||
T iostate exceptions() const;<br />
|
||
T void exceptions(iostate except);<br />
|
||
// _lib.basic.ios.cons_ Constructor/destructor:<br />
|
||
T explicit basic_ios(basic_streambuf<charT,traits>* sb);<br />
|
||
T virtual ~basic_ios();<br />
|
||
// _lib.basic.ios.members_ Members:<br />
|
||
T basic_ostream<charT,traits>* tie() const;<br />
|
||
T basic_ostream<charT,traits>* tie(basic_ostream<charT,traits>* tiestr);<br />
|
||
T basic_streambuf<charT,traits>* rdbuf() const;<br />
|
||
T basic_streambuf<charT,traits>* rdbuf(basic_streambuf<charT,traits>* sb);<br />
|
||
X basic_ios& copyfmt(const basic_ios& rhs);<br />
|
||
T char_type fill() const;<br />
|
||
T char_type fill(char_type ch);<br />
|
||
// _lib.ios.base.locales_ locales:<br />
|
||
T locale imbue(const locale& loc);<br />
|
||
X char narrow(char_type c, char dfault) const;<br />
|
||
X char_type widen(char c) const;<br />
|
||
protected:<br />
|
||
basic_ios();<br />
|
||
T void init(basic_streambuf<charT,traits>* sb);<br />
|
||
private:<br />
|
||
T basic_ios(const basic_ios& ); // not defined<br />
|
||
T basic_ios& operator=(const basic_ios&); // not defined<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.5 Stream buffers [lib.stream.buffers]<br />
|
||
<br />
|
||
Header <streambuf> synopsis<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_streambuf;<br />
|
||
T typedef basic_streambuf<char> streambuf;<br />
|
||
T typedef basic_streambuf<wchar_t> wstreambuf;<br />
|
||
<br />
|
||
27.5.2 Template class [lib.streambuf]<br />
|
||
basic_streambuf<charT,traits><br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
X class basic_streambuf {<br />
|
||
public:<br />
|
||
<br />
|
||
// Types:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
T virtual ~basic_streambuf();<br />
|
||
// _lib.streambuf.locales_ locales:<br />
|
||
T locale pubimbue(const locale &loc);<br />
|
||
T locale getloc() const;<br />
|
||
// _lib.streambuf.buffer_ buffer and positioning:<br />
|
||
T basic_streambuf<char_type,traits>*<br />
|
||
pubsetbuf(char_type* s, streamsize n);<br />
|
||
T pos_type pubseekoff(off_type off, ios_base::seekdir way,<br />
|
||
ios_base::openmode which =<br />
|
||
ios_base::in | ios_base::out);<br />
|
||
T pos_type pubseekpos(pos_type sp,<br />
|
||
ios_base::openmode which =<br />
|
||
ios_base::in | ios_base::out);<br />
|
||
T int pubsync();<br />
|
||
<br />
|
||
// Get and put areas:<br />
|
||
// _lib.streambuf.pub.get_ Get area:<br />
|
||
T streamsize in_avail();<br />
|
||
T int_type snextc();<br />
|
||
T int_type sbumpc();<br />
|
||
T int_type sgetc();<br />
|
||
T streamsize sgetn(char_type* s, streamsize n);<br />
|
||
// _lib.streambuf.pub.pback_ Putback:<br />
|
||
X int_type sputbackc(char_type c);<br />
|
||
X int_type sungetc();<br />
|
||
// _lib.streambuf.pub.put_ Put area:<br />
|
||
T int_type sputc(char_type c);<br />
|
||
X streamsize sputn(const char_type* s, streamsize n);<br />
|
||
protected:<br />
|
||
T basic_streambuf();<br />
|
||
// _lib.streambuf.get.area_ Get area:<br />
|
||
T char_type* eback() const;<br />
|
||
T char_type* gptr() const;<br />
|
||
T char_type* egptr() const;<br />
|
||
T void gbump(int n);<br />
|
||
T void setg(char_type* gbeg, char_type* gnext, char_type* gend);<br />
|
||
// _lib.streambuf.put.area_ Put area:<br />
|
||
T char_type* pbase() const;<br />
|
||
T char_type* pptr() const;<br />
|
||
T char_type* epptr() const;<br />
|
||
T void pbump(int n);<br />
|
||
T void setp(char_type* pbeg, char_type* pend);<br />
|
||
// _lib.streambuf.virtuals_ virtual functions:<br />
|
||
// _lib.streambuf.virt.locales_ Locales:<br />
|
||
T virtual void imbue(const locale &loc);<br />
|
||
// _lib.streambuf.virt.buffer_ Buffer management and positioning:<br />
|
||
T virtual basic_streambuf<char_type,traits>*<br />
|
||
setbuf(char_type* s, streamsize n);<br />
|
||
T virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
|
||
ios_base::openmode which = ios_base::in | ios_base::out);<br />
|
||
T virtual pos_type seekpos(pos_type sp,<br />
|
||
ios_base::openmode which = ios_base::in | ios_base::out);<br />
|
||
T virtual int sync();<br />
|
||
// _lib.streambuf.virt.get_ Get area:<br />
|
||
T virtual int showmanyc();<br />
|
||
T virtual streamsize xsgetn(char_type* s, streamsize n);<br />
|
||
T virtual int_type underflow();<br />
|
||
T virtual int_type uflow();<br />
|
||
// _lib.streambuf.virt.pback_ Putback:<br />
|
||
T virtual int_type pbackfail(int_type c = traits::eof());<br />
|
||
// _lib.streambuf.virt.put_ Put area:<br />
|
||
X virtual streamsize xsputn(const char_type* s, streamsize n);<br />
|
||
T virtual int_type overflow (int_type c = traits::eof());<br />
|
||
};<br />
|
||
<br />
|
||
27.6 Formatting and manipulators [lib.iostream.format]<br />
|
||
<br />
|
||
Header <istream> synopsis<br />
|
||
<br />
|
||
T template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_istream;<br />
|
||
T typedef basic_istream<char> istream;<br />
|
||
T typedef basic_istream<wchar_t> wistream;<br />
|
||
<br />
|
||
T template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_iostream;<br />
|
||
T typedef basic_iostream<char> iostream;<br />
|
||
T typedef basic_iostream<wchar_t> wiostream;<br />
|
||
<br />
|
||
X template <class charT, class traits><br />
|
||
basic_istream<charT,traits>& ws(basic_istream<charT,traits>& is);<br />
|
||
<br />
|
||
Header <ostream> synopsis<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ostream;<br />
|
||
T typedef basic_ostream<char> ostream;<br />
|
||
T typedef basic_ostream<wchar_t> wostream;<br />
|
||
<br />
|
||
T template <class charT, class traits><br />
|
||
basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);<br />
|
||
T template <class charT, class traits><br />
|
||
basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os);<br />
|
||
T template <class charT, class traits><br />
|
||
basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os);<br />
|
||
<br />
|
||
Header <iomanip> synopsis<br />
|
||
<br />
|
||
// Types T1, T2, ... are unspecified implementation types<br />
|
||
T T1 resetiosflags(ios_base::fmtflags mask);<br />
|
||
T T2 setiosflags (ios_base::fmtflags mask);<br />
|
||
T T3 setbase(int base);<br />
|
||
T template<charT> T4 setfill(charT c);<br />
|
||
T T5 setprecision(int n);<br />
|
||
T T6 setw(int n);<br />
|
||
<br />
|
||
<br />
|
||
27.6.1.1 Template class basic_istream [lib.istream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
T class basic_istream : virtual public basic_ios<charT,traits> {<br />
|
||
public:<br />
|
||
// Types (inherited from basic_ios (_lib.ios_)):<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.istream.cons_ Constructor/destructor:<br />
|
||
T explicit basic_istream(basic_streambuf<charT,traits>* sb);<br />
|
||
T virtual ~basic_istream();<br />
|
||
// _lib.istream::sentry_ Prefix/suffix:<br />
|
||
T class sentry;<br />
|
||
<br />
|
||
// _lib.istream.formatted_ Formatted input:<br />
|
||
T basic_istream<charT,traits>& operator>><br />
|
||
(basic_istream<charT,traits>& (*pf)(basic_istream<charT,traits>&))<br />
|
||
T basic_istream<charT,traits>& operator>><br />
|
||
(basic_ios<charT,traits>& (*pf)(basic_ios<charT,traits>&))<br />
|
||
T basic_istream<charT,traits>& operator>><br />
|
||
(ios_base& (*pf)(ios_base&))<br />
|
||
S basic_istream<charT,traits>& operator>>(bool& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(short& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(unsigned short& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(int& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(unsigned int& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(long& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(unsigned long& n);<br />
|
||
S basic_istream<charT,traits>& operator>>(float& f);<br />
|
||
S basic_istream<charT,traits>& operator>>(double& f);<br />
|
||
S basic_istream<charT,traits>& operator>>(long double& f);<br />
|
||
S basic_istream<charT,traits>& operator>>(void*& p);<br />
|
||
S basic_istream<charT,traits>& operator>><br />
|
||
(basic_streambuf<char_type,traits>* sb);<br />
|
||
// _lib.istream.unformatted_ Unformatted input:<br />
|
||
T streamsize gcount() const;<br />
|
||
S int_type get();<br />
|
||
S basic_istream<charT,traits>& get(char_type& c);<br />
|
||
S basic_istream<charT,traits>& get(char_type* s, streamsize n);<br />
|
||
S basic_istream<charT,traits>& get(char_type* s, streamsize n,<br />
|
||
char_type delim);<br />
|
||
S basic_istream<charT,traits>& get(basic_streambuf<char_type,traits>& sb);<br />
|
||
S basic_istream<charT,traits>& get(basic_streambuf<char_type,traits>& sb,<br />
|
||
char_type delim);<br />
|
||
S basic_istream<charT,traits>& getline(char_type* s, streamsize n);<br />
|
||
S basic_istream<charT,traits>& getline(char_type* s, streamsize n,<br />
|
||
char_type delim);<br />
|
||
S basic_istream<charT,traits>& ignore<br />
|
||
(streamsize n = 1, int_type delim = traits::eof());<br />
|
||
S int_type peek();<br />
|
||
S basic_istream<charT,traits>& read (char_type* s, streamsize n);<br />
|
||
S streamsize readsome(char_type* s, streamsize n);<br />
|
||
S basic_istream<charT,traits>& putback(char_type c);<br />
|
||
S basic_istream<charT,traits>& unget();<br />
|
||
S int sync();<br />
|
||
<br />
|
||
S pos_type tellg();<br />
|
||
S basic_istream<charT,traits>& seekg(pos_type);<br />
|
||
S basic_istream<charT,traits>& seekg(off_type, ios_base::seekdir);<br />
|
||
};<br />
|
||
<br />
|
||
// _lib.istream::extractors_ character extraction templates:<br />
|
||
S template<class charT, class traits><br />
|
||
basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&,<br />
|
||
charT&);<br />
|
||
S template<class traits><br />
|
||
basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
|
||
unsigned char&);<br />
|
||
S template<class traits><br />
|
||
basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
|
||
signed char&);<br />
|
||
<br />
|
||
S template<class charT, class traits><br />
|
||
basic_istream<charT,traits>& operator>>(basic_istream<charT,traits>&,<br />
|
||
charT*);<br />
|
||
S template<class traits><br />
|
||
basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
|
||
unsigned char*);<br />
|
||
S template<class traits><br />
|
||
basic_istream<char,traits>& operator>>(basic_istream<char,traits>&,<br />
|
||
signed char*);<br />
|
||
<br />
|
||
27.6.1.1.2 Class basic_istream::sentry [lib.istream::sentry]<br />
|
||
<br />
|
||
<br />
|
||
template <class charT,class traits = char_traits<charT> ><br />
|
||
S class basic_istream<charT,traits>::sentry {<br />
|
||
typedef traits traits_type;<br />
|
||
S bool ok_; // exposition only<br />
|
||
public:<br />
|
||
S explicit sentry(basic_istream<charT,traits>& is, bool noskipws = false);<br />
|
||
S ~sentry();<br />
|
||
S operator bool() const { return ok_; }<br />
|
||
private:<br />
|
||
T sentry(const sentry&); // not defined<br />
|
||
T sentry& operator=(const sentry&); // not defined<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.6.1.5 Template class basic_iostream [lib.iostreamclass]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
T class basic_iostream :<br />
|
||
public basic_istream<charT,traits>,<br />
|
||
public basic_ostream<charT,traits> {<br />
|
||
public:<br />
|
||
// constructor/destructor<br />
|
||
T explicit basic_iostream(basic_streambuf<charT,traits>* sb);<br />
|
||
T virtual ~basic_iostream();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.6.2.1 Template class basic_ostream [lib.ostream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
X class basic_ostream : virtual public basic_ios<charT,traits> {<br />
|
||
public:<br />
|
||
// Types (inherited from basic_ios (_lib.ios_)):<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.ostream.cons_ Constructor/destructor:<br />
|
||
T explicit basic_ostream(basic_streambuf<char_type,traits>* sb);<br />
|
||
T virtual ~basic_ostream();<br />
|
||
// _lib.ostream::sentry_ Prefix/suffix:<br />
|
||
T class sentry;<br />
|
||
// _lib.ostream.formatted_ Formatted output:<br />
|
||
T basic_ostream<charT,traits>& operator<<<br />
|
||
(basic_ostream<charT,traits>& (*pf)(basic_ostream<charT,traits>&));<br />
|
||
T basic_ostream<charT,traits>& operator<<<br />
|
||
(basic_ios<charT,traits>& (*pf)(basic_ios<charT,traits>&));<br />
|
||
T basic_ostream<charT,traits>& operator<<<br />
|
||
(ios_base& (*pf)(ios_base&));<br />
|
||
T basic_ostream<charT,traits>& operator<<(bool n);<br />
|
||
T basic_ostream<charT,traits>& operator<<(short n);<br />
|
||
T basic_ostream<charT,traits>& operator<<(unsigned short n);<br />
|
||
T basic_ostream<charT,traits>& operator<<(int n);<br />
|
||
T basic_ostream<charT,traits>& operator<<(unsigned int n);<br />
|
||
T basic_ostream<charT,traits>& operator<<(long n);<br />
|
||
T basic_ostream<charT,traits>& operator<<(unsigned long n);<br />
|
||
S basic_ostream<charT,traits>& operator<<(float f);<br />
|
||
S basic_ostream<charT,traits>& operator<<(double f);<br />
|
||
S basic_ostream<charT,traits>& operator<<(long double f);<br />
|
||
T basic_ostream<charT,traits>& operator<<(const void* p);<br />
|
||
X basic_ostream<charT,traits>& operator<<<br />
|
||
(basic_streambuf<char_type,traits>* sb);<br />
|
||
// _lib.ostream.unformatted_ Unformatted output:<br />
|
||
T basic_ostream<charT,traits>& put(char_type c);<br />
|
||
T basic_ostream<charT,traits>& write(const char_type* s, streamsize n);<br />
|
||
X basic_ostream<charT,traits>& flush();<br />
|
||
<br />
|
||
// _lib.ostream.seeks_ seeks:<br />
|
||
S pos_type tellp();<br />
|
||
S basic_ostream<charT,traits>& seekp(pos_type);<br />
|
||
S basic_ostream<charT,traits>& seekp(off_type, ios_base::seekdir);<br />
|
||
};<br />
|
||
// _lib.ostream.inserters.character_ character inserters<br />
|
||
X template<class charT, class traits><br />
|
||
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
|
||
charT);<br />
|
||
X template<class charT, class traits><br />
|
||
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
|
||
char);<br />
|
||
// specialization<br />
|
||
X template<class traits><br />
|
||
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
|
||
char);<br />
|
||
// signed and unsigned<br />
|
||
X template<class traits><br />
|
||
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
|
||
signed char);<br />
|
||
X template<class traits><br />
|
||
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
|
||
unsigned char)<br />
|
||
X template<class charT, class traits><br />
|
||
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
|
||
const charT*);<br />
|
||
X template<class charT, class traits><br />
|
||
basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&,<br />
|
||
const char*);<br />
|
||
// partial specializationss<br />
|
||
X template<class traits><br />
|
||
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
|
||
const char*);<br />
|
||
// signed and unsigned<br />
|
||
X template<class traits><br />
|
||
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
|
||
const signed char*);<br />
|
||
X template<class traits><br />
|
||
basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&,<br />
|
||
const unsigned char*);<br />
|
||
<br />
|
||
<br />
|
||
27.6.2.3 Class basic_ostream::sentry [lib.ostream::sentry]<br />
|
||
<br />
|
||
template <class charT,class traits = char_traits<charT> ><br />
|
||
X class basic_ostream<charT,traits>::sentry {<br />
|
||
bool ok_; // exposition only<br />
|
||
public:<br />
|
||
X explicit sentry(basic_ostream<charT,traits>& os);<br />
|
||
X ~sentry();<br />
|
||
X operator bool() const { return ok_; }<br />
|
||
private<br />
|
||
X sentry(const sentry&); // not defined<br />
|
||
X sentry& operator=(const sentry&); // not defined<br />
|
||
};<br />
|
||
<br />
|
||
27.7 String-based streams [lib.string.streams]<br />
|
||
<br />
|
||
Header <sstream> synopsis<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
class basic_stringbuf;<br />
|
||
<br />
|
||
T typedef basic_stringbuf<char> stringbuf;<br />
|
||
T typedef basic_stringbuf<wchar_t> wstringbuf;<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_istringstream;<br />
|
||
<br />
|
||
T typedef basic_istringstream<char> istringstream;<br />
|
||
T typedef basic_istringstream<wchar_t> wistringstream;<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_ostringstream;<br />
|
||
T typedef basic_ostringstream<char> ostringstream;<br />
|
||
T typedef basic_ostringstream<wchar_t> wostringstream;<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_stringstream;<br />
|
||
T typedef basic_stringstream<char> stringstream;<br />
|
||
T typedef basic_stringstream<wchar_t> wstringstream;<br />
|
||
<br />
|
||
27.7.1 Template class basic_stringbuf [lib.stringbuf]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_stringbuf : public basic_streambuf<charT,traits> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.stringbuf.cons_ Constructors:<br />
|
||
S explicit basic_stringbuf(ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
S explicit basic_stringbuf<br />
|
||
(const basic_string<charT,traits,Allocator>& str,<br />
|
||
ios_base::openmode which = ios_base::in | ios_base::out);<br />
|
||
// _lib.stringbuf.members_ Get and set:<br />
|
||
S basic_string<charT,traits,Allocator> str() const;<br />
|
||
S void str(const basic_string<charT,traits,Allocator>& s);<br />
|
||
<br />
|
||
protected:<br />
|
||
// _lib.stringbuf.virtuals_ Overridden virtual functions:<br />
|
||
S virtual int_type underflow();<br />
|
||
S virtual int_type pbackfail(int_type c = traits::eof());<br />
|
||
S virtual int_type overflow (int_type c = traits::eof());<br />
|
||
S virtual basic_streambuf<charT,traits>* setbuf(charT*, streamsize);<br />
|
||
<br />
|
||
S virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
|
||
ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
S virtual pos_type seekpos(pos_type sp,<br />
|
||
ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.7.2 Template class basic_istringstream [lib.istringstream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_istringstream : public basic_istream<charT,traits> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.istringstream.cons_ Constructors:<br />
|
||
S explicit basic_istringstream(ios_base::openmode which = ios_base::in);<br />
|
||
S explicit basic_istringstream(<br />
|
||
const basic_string<charT,traits,Allocator>& str,<br />
|
||
ios_base::openmode which = ios_base::in);<br />
|
||
<br />
|
||
// _lib.istringstream.members_ Members:<br />
|
||
S basic_stringbuf<charT,traits,Allocator>* rdbuf() const;<br />
|
||
S basic_string<charT,traits,Allocator> str() const;<br />
|
||
S void str(const basic_string<charT,traits,Allocator>& s);<br />
|
||
private:<br />
|
||
// basic_stringbuf<charT,traits,Allocator> sb; exposition only<br />
|
||
};<br />
|
||
<br />
|
||
27.7.3 Class basic_ostringstream [lib.ostringstream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_ostringstream : public basic_ostream<charT,traits> {<br />
|
||
public:<br />
|
||
<br />
|
||
// Types:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
// _lib.ostringstream.cons_ Constructors/destructor:<br />
|
||
S explicit basic_ostringstream(ios_base::openmode which = ios_base::out);<br />
|
||
S explicit basic_ostringstream(<br />
|
||
const basic_string<charT,traits,Allocator>& str,<br />
|
||
ios_base::openmode which = ios_base::out);<br />
|
||
// _lib.ostringstream.members_ Members:<br />
|
||
S basic_stringbuf<charT,traits,Allocator>* rdbuf() const;<br />
|
||
S basic_string<charT,traits,Allocator> str() const;<br />
|
||
S void str(const basic_string<charT,traits,Allocator>& s);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.7.4 Template class basic_stringstream [lib.stringstream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT>,<br />
|
||
class Allocator = allocator<charT> ><br />
|
||
X class basic_stringstream<br />
|
||
: public basic_iostream<charT,traits> {<br />
|
||
public:<br />
|
||
// Types<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
// constructors/destructors<br />
|
||
S explicit basic_stringstream(<br />
|
||
ios_base::openmode which = ios_base::out|ios_base::in);<br />
|
||
S explicit basic_stringstream(<br />
|
||
const basic_string<charT,traits,Allocator>& str,<br />
|
||
ios_base::openmode which = ios_base::out|ios_base::in);<br />
|
||
// Members:<br />
|
||
S basic_stringbuf<charT,traits,Allocator>* rdbuf() const;<br />
|
||
S basic_string<charT,traits,Allocator> str() const;<br />
|
||
S void str(const basic_string<charT,traits,Allocator>& str);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
27.8.1 File streams [lib.fstreams]<br />
|
||
<br />
|
||
<br />
|
||
Header <fstream> synopsis<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_filebuf;<br />
|
||
T typedef basic_filebuf<char> filebuf;<br />
|
||
T typedef basic_filebuf<wchar_t> wfilebuf;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ifstream;<br />
|
||
T typedef basic_ifstream<char> ifstream;<br />
|
||
T typedef basic_ifstream<wchar_t> wifstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ofstream;<br />
|
||
T typedef basic_ofstream<char> ofstream;<br />
|
||
T typedef basic_ofstream<wchar_t> wofstream;<br />
|
||
<br />
|
||
X template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_fstream;<br />
|
||
T typedef basic_fstream<char> fstream;<br />
|
||
T typedef basic_fstream<wchar_t> wfstream;<br />
|
||
<br />
|
||
27.8.1.1 Template class basic_filebuf [lib.filebuf]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
X class basic_filebuf : public basic_streambuf<charT,traits> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.filebuf.cons_ Constructors/destructor:<br />
|
||
X basic_filebuf();<br />
|
||
X virtual ~basic_filebuf();<br />
|
||
// _lib.filebuf.members_ Members:<br />
|
||
T bool is_open() const;<br />
|
||
X basic_filebuf<charT,traits>* open<br />
|
||
(const char* s, ios_base::openmode mode);<br />
|
||
X basic_filebuf<charT,traits>* close();<br />
|
||
protected:<br />
|
||
// _lib.filebuf.virtuals_ Overridden virtual functions:<br />
|
||
X virtual streamsize showmanyc();<br />
|
||
X virtual int_type underflow();<br />
|
||
X virtual int_type uflow();<br />
|
||
X virtual int_type pbackfail(int_type c = traits::eof());<br />
|
||
X virtual int_type overflow (int_type c = traits::eof());<br />
|
||
S virtual basic_streambuf<charT,traits>*<br />
|
||
setbuf(char_type* s, streamsize n);<br />
|
||
S virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
|
||
ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
S virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
S virtual int sync();<br />
|
||
S virtual void imbue(const locale& loc);<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
27.8.1.5 Template class basic_ifstream [lib.ifstream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
X class basic_ifstream : public basic_istream<charT,traits> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.ifstream.cons_ Constructors:<br />
|
||
S basic_ifstream();<br />
|
||
S explicit basic_ifstream(const char* s,<br />
|
||
ios_base::openmode mode = ios_base::in);<br />
|
||
// _lib.ifstream.members_ Members:<br />
|
||
S basic_filebuf<charT,traits>* rdbuf() const;<br />
|
||
S bool is_open();<br />
|
||
S void open(const char* s, ios_base::openmode mode = ios_base::in);<br />
|
||
S void close();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.8.1.8 Template class basic_ofstream [lib.ofstream]<br />
|
||
<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
X class basic_ofstream : public basic_ostream<charT,traits> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// _lib.ofstream.cons_ Constructors:<br />
|
||
X basic_ofstream();<br />
|
||
X explicit basic_ofstream(const char* s,<br />
|
||
ios_base::openmode mode<br />
|
||
= ios_base::out);<br />
|
||
// _lib.ofstream.members_ Members:<br />
|
||
X basic_filebuf<charT,traits>* rdbuf() const;<br />
|
||
T bool is_open();<br />
|
||
X void open(const char* s, ios_base::openmode mode = ios_base::out);<br />
|
||
X void close();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
27.8.1.11 Template class basic_fstream [lib.fstream]<br />
|
||
<br />
|
||
template <class charT, class traits=char_traits<charT> ><br />
|
||
X class basic_fstream<br />
|
||
: public basic_iostream<charT,traits> {<br />
|
||
public:<br />
|
||
T typedef charT char_type;<br />
|
||
T typedef typename traits::int_type int_type;<br />
|
||
T typedef typename traits::pos_type pos_type;<br />
|
||
T typedef typename traits::off_type off_type;<br />
|
||
T typedef traits traits_type;<br />
|
||
// constructors/destructor<br />
|
||
S basic_fstream();<br />
|
||
S explicit basic_fstream(<br />
|
||
const char* s,<br />
|
||
ios_base::openmode mode = ios_base::in|ios_base::out);<br />
|
||
<br />
|
||
// Members:<br />
|
||
S basic_filebuf<charT,traits>* rdbuf() const;<br />
|
||
S bool is_open();<br />
|
||
S void open(<br />
|
||
const char* s,<br />
|
||
ios_base::openmode mode = ios_base::in|ios_base::out);<br />
|
||
S void close();<br />
|
||
};<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
27.8.2 C Library files [lib.c.files]<br />
|
||
<br />
|
||
<br />
|
||
Table 13--Header <cstdio> synopsis<br />
|
||
Macros:<br />
|
||
X BUFSIZ L_tmpnam SEEK_SET TMP_MAX<br />
|
||
X EOF NULL <cstdio> stderr _IOFBF<br />
|
||
X FILENAME_MAX SEEK_CUR stdin _IOLBF<br />
|
||
X FOPEN_MAX SEEK_END stdout _IONBF<br />
|
||
<br />
|
||
X Types: FILE fpos_t size_t <cstdio><br />
|
||
Functions:<br />
|
||
X clearerr fgets fscanf gets rewind<br />
|
||
X fclose fopen fseek perror scanf tmpnam<br />
|
||
X feof fprintf fsetpos printf setbuf ungetc<br />
|
||
X ferror fputc ftell putc setvbuf vprintf<br />
|
||
X fflush fputs fwrite puts sprintf vfprintf<br />
|
||
X fgetc fread getc remove sscanf vsprintf<br />
|
||
X fgetpos freopen getchar putchar rename tmpfile<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
1.5 Standard C library headers [depr.c.headers]<br />
|
||
<br />
|
||
X <assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h><br />
|
||
<ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h><br />
|
||
<errno.h> <locale.h> <stdarg.h> <string.h><br />
|
||
<float.h> <math.h> <stddef.h> <time.h><br />
|
||
<br />
|
||
1.6 Old iostreams members [depr.ios.members]<br />
|
||
<br />
|
||
[Note: these should be #ifdef'd to permit diagnostics if used.]<br />
|
||
namespace std {<br />
|
||
class ios_base {<br />
|
||
public:<br />
|
||
T typedef T1 io_state;<br />
|
||
T typedef T2 open_mode;<br />
|
||
T typedef T3 seek_dir;<br />
|
||
T typedef OFF_T streamoff;<br />
|
||
T typedef OFF_T streampos;<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
[Note: these should be #ifdef'd to permit diagnostics if used.]<br />
|
||
namespace std {<br />
|
||
template<class charT, class traits = char_traits<charT> ><br />
|
||
class basic_streambuf {<br />
|
||
public:<br />
|
||
T void stossc();<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
8 An implementation may provide the following member functions that<br />
|
||
overload signatures specified in clause _lib.iostreams_:<br />
|
||
<br />
|
||
[Note: the following overloads should be #ifdef'd to permit<br />
|
||
diagnostics to be emitted, by default, if used.]<br />
|
||
<br />
|
||
template<class charT, class Traits> class basic_ios {<br />
|
||
public:<br />
|
||
M void clear(io_state state);<br />
|
||
M void setstate(io_state state);<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
class ios_base {<br />
|
||
public:<br />
|
||
M void exceptions(io_state);<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
template<class charT, class traits = char_traits<charT> ><br />
|
||
class basic_streambuf {<br />
|
||
public:<br />
|
||
M pos_type pubseekoff(off_type off, ios_base::seek_dir way,<br />
|
||
ios_base::open_mode which = ios_base::in | ios_base::out);<br />
|
||
M pos_type pubseekpos(pos_type sp,<br />
|
||
ios_base::open_mode which = ios_base::in | ios_base::out);<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_filebuf : public basic_streambuf<charT,traits> {<br />
|
||
public:<br />
|
||
M basic_filebuf<charT,traits>* open<br />
|
||
(const char* s, ios_base::open_mode mode);<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ifstream : public basic_istream<charT,traits> {<br />
|
||
public:<br />
|
||
M void open(const char* s, ios_base::open_mode mode = in);<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
template <class charT, class traits = char_traits<charT> ><br />
|
||
class basic_ofstream : public basic_ostream<charT,traits> {<br />
|
||
public:<br />
|
||
M void open(const char* s, ios_base::open_mode mode = out | trunc);<br />
|
||
// remainder unchanged<br />
|
||
};<br />
|
||
}<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
1.7.1 Class strstreambuf [depr.strstreambuf]<br />
|
||
<br />
|
||
[Note: It should be possible to adopt these components with only<br />
|
||
minor changes from the 2.8 version of the library.]<br />
|
||
<br />
|
||
M class strstreambuf : public basic_streambuf<char> {<br />
|
||
public:<br />
|
||
M explicit strstreambuf(streamsize alsize_arg = 0);<br />
|
||
M strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*));<br />
|
||
M strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0);<br />
|
||
M strstreambuf(const char* gnext_arg, streamsize n);<br />
|
||
M strstreambuf(signed char* gnext_arg, streamsize n,<br />
|
||
signed char* pbeg_arg = 0);<br />
|
||
M strstreambuf(const signed char* gnext_arg, streamsize n);<br />
|
||
M strstreambuf(unsigned char* gnext_arg, streamsize n,<br />
|
||
unsigned char* pbeg_arg = 0);<br />
|
||
M strstreambuf(const unsigned char* gnext_arg, streamsize n);<br />
|
||
M virtual ~strstreambuf();<br />
|
||
M void freeze(bool freezefl = true);<br />
|
||
M char* str();<br />
|
||
M int pcount();<br />
|
||
protected:<br />
|
||
M virtual int_type overflow (int_type c = EOF);<br />
|
||
M virtual int_type pbackfail(int_type c = EOF);<br />
|
||
M virtual int_type underflow();<br />
|
||
M virtual pos_type seekoff(off_type off, ios_base::seekdir way,<br />
|
||
ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
M virtual pos_type seekpos(pos_type sp, ios_base::openmode which<br />
|
||
= ios_base::in | ios_base::out);<br />
|
||
M virtual streambuf<char>* setbuf(char* s, streamsize n);<br />
|
||
}<br />
|
||
<br />
|
||
1.7.4 Class strstream [depr.strstream]<br />
|
||
<br />
|
||
M class strstream<br />
|
||
: public basic_iostream<char> {<br />
|
||
public:<br />
|
||
// Types<br />
|
||
M typedef char char_type;<br />
|
||
M typedef typename char_traits<char>::int_type int_type<br />
|
||
M typedef typename char_traits<char>::pos_type pos_type;<br />
|
||
M typedef typename char_traits<char>::off_type off_type;<br />
|
||
// consturctors/destructor<br />
|
||
M strstream();<br />
|
||
M strstream(char* s, int n,<br />
|
||
ios_base::openmode mode = ios_base::in|ios_base::out);<br />
|
||
M virtual ~strstream();<br />
|
||
// Members:<br />
|
||
M strstreambuf* rdbuf() const;<br />
|
||
M void freeze(bool freezefl = true);<br />
|
||
M int pcount() const;<br />
|
||
M char* str();<br />
|
||
};<br />
|
||
</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>
|
||
The ISO standard defines the following phrase:
|
||
</p><div class="blockquote"><blockquote class="blockquote"><div class="variablelist"><dl><dt><span class="term">
|
||
<code class="code">[1.3.5] implementation-defined behavior</code>
|
||
</span></dt><dd><p>
|
||
Behavior, for a well-formed program construct and correct data, that
|
||
depends on the implementation <span class="emphasis"><em>and that each implementation
|
||
shall document</em></span>.
|
||
</p></dd></dl></div></blockquote></div><p>
|
||
We do so here, for the C++ library only. Behavior of the
|
||
compiler, linker, runtime loader, and other elements of "the
|
||
implementation" are documented elsewhere. Everything listed
|
||
in Annex B, Implementation Qualities, are also part of the
|
||
compiler, not the library.
|
||
</p><p>
|
||
For each entry, we give the section number of the standard, when
|
||
applicable. This list is probably incomplet and inkorrekt.
|
||
</p><p>
|
||
<span class="emphasis"><em>[1.9]/11 #3</em></span> If <code class="code">isatty(3)</code> is true, then
|
||
interactive stream support is implied.
|
||
</p><p>
|
||
<span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best
|
||
discussed in the various sections on multithreading (see above).
|
||
</p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described
|
||
<a class="ulink" href="../18_support/howto.html#1" target="_top">here</a>.
|
||
</p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library
|
||
sections, libstdc++ has zero control over what the cleanup code hands
|
||
back to the runtime loader. Talk to the compiler people. :-)
|
||
</p><p><span class="emphasis"><em>[18.4.2.1]/5</em></span> (bad_alloc),
|
||
<span class="emphasis"><em>[18.5.2]/5</em></span> (bad_cast),
|
||
<span class="emphasis"><em>[18.5.3]/5</em></span> (bad_typeid),
|
||
<span class="emphasis"><em>[18.6.1]/8</em></span> (exception),
|
||
<span class="emphasis"><em>[18.6.2.1]/5</em></span> (bad_exception): The <code class="code">what()</code>
|
||
member function of class <code class="code">std::exception</code>, and these other
|
||
classes publicly derived from it, simply returns the name of the
|
||
class. But they are the <span class="emphasis"><em>mangled</em></span> names; you will need to call
|
||
<code class="code">c++filt</code> and pass the names as command-line parameters to
|
||
demangle them, or call a
|
||
<a class="ulink" href="../18_support/howto.html#5" target="_top">runtime demangler function</a>.
|
||
(The classes in <code class="code"><stdexcept></code> have constructors which
|
||
require an argument to use later for <code class="code">what()</code> calls, so the
|
||
problem of <code class="code">what()</code>'s value does not arise in most
|
||
user-defined exceptions.)
|
||
</p><p><span class="emphasis"><em>[18.5.1]/7</em></span> The return value of
|
||
<code class="code">std::type_info::name()</code> is the mangled type name (see the
|
||
previous entry for more).
|
||
</p><p><span class="emphasis"><em>[20.1.5]/5</em></span> <span class="emphasis"><em>"Implementors are encouraged to
|
||
supply libraries that can accept allocators that encapsulate more
|
||
general memory models and that support non-equal instances. In such
|
||
implementations, any requirements imposed on allocators by containers
|
||
beyond those requirements that appear in Table 32, and the semantics
|
||
of containers and algorithms when allocator instances compare
|
||
non-equal, are implementation-defined."</em></span> As yet we don't
|
||
have any allocators which compare non-equal, so we can't describe how
|
||
they behave.
|
||
</p><p><span class="emphasis"><em>[21.1.3.1]/3,4</em></span>,
|
||
<span class="emphasis"><em>[21.1.3.2]/2</em></span>,
|
||
<span class="emphasis"><em>[23.*]'s foo::iterator</em></span>,
|
||
<span class="emphasis"><em>[27.*]'s foo::*_type</em></span>,
|
||
<span class="emphasis"><em>others...</em></span>
|
||
Nope, these types are called implementation-defined because you
|
||
shouldn't be taking advantage of their underlying types. Listing them
|
||
here would defeat the purpose. :-)
|
||
</p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about the mbstate_t
|
||
stuff... see the <a class="ulink" href="../22_locale/howto.html" target="_top">chapter 22 notes</a>
|
||
for what does exist.
|
||
</p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale
|
||
implementation will be described
|
||
<a class="ulink" href="../22_locale/howto.html" target="_top">over here</a>.
|
||
</p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what
|
||
<code class="code">complex<T></code>'s pow(0,0) returns.
|
||
</p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling
|
||
<code class="code">std::ios_base::sync_with_stdio</code> after I/O has already been
|
||
performed on the standard stream objects will
|
||
flush the buffers, and
|
||
destroy and recreate the underlying buffer instances. Whether or not
|
||
the previously-written I/O is destroyed in this process depends mostly
|
||
on the --enable-libio choice: for stdio, if the written data is
|
||
already in the stdio buffer, the data may be completely safe!
|
||
</p><p><span class="emphasis"><em>[27.6.1.1.2]</em></span>,
|
||
<span class="emphasis"><em>[27.6.2.3]</em></span> The I/O sentry ctor and dtor can perform
|
||
additional work than the minimum required. We are not currently taking
|
||
advantage of this yet.
|
||
</p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>,
|
||
<span class="emphasis"><em>[27.8.1.4]/10</em></span>
|
||
The effects of <code class="code">pubsetbuf/setbuf</code> are described
|
||
<a class="ulink" href="../27_io/howto.html#2" target="_top">in this chapter</a>.
|
||
</p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when
|
||
a get area exists will... whatever <code class="code">fflush()</code> does, I think.
|
||
</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>
|
||
This table is based on the table of contents of ISO/IEC DTR 19768
|
||
Doc No: N1836=05-0096 Date: 2005-06-24
|
||
Draft Technical Report on C++ Library Extensions
|
||
</p><p>
|
||
In this implementation the header names are prefixed by
|
||
<code class="code">tr1/</code>, for instance <code class="code"><tr1/functional></code>,
|
||
<code class="code"><tr1/memory></code>, and so on.
|
||
</p><p>
|
||
This page describes the TR1 support in mainline GCC SVN, not in any particular
|
||
release.
|
||
</p><div class="table"><a id="id549759"></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>
|
||
Footnotes
|
||
</p><p>
|
||
The shared_ptr implementation uses some code from the
|
||
<a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost
|
||
shared_ptr</a> library.
|
||
</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>
|
||
This table is based on the table of contents of ISO/IEC
|
||
Doc No: N2461=07-0331 Date: 2007-10-22
|
||
Working Draft, Standard for Programming Language C++
|
||
</p><p>
|
||
In this implementation <code class="literal">-std=gnu++0x</code> or
|
||
<code class="literal">-std=c++0x</code> flags must be used to enable language and
|
||
library features. The pre-defined symbol
|
||
<code class="constant">__GXX_EXPERIMENTAL_CXX0X__</code> is used to check for the
|
||
presence of the required flag.
|
||
</p><p>
|
||
This page describes the C++0x support in mainline GCC SVN, not in any
|
||
particular release.
|
||
</p><div class="table"><a id="id466249"></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">
|
||
<a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top">N2351</a>
|
||
</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>
|
||
Footnotes
|
||
</p><p>
|
||
The shared_ptr implementation uses some code from the
|
||
<a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">Boost
|
||
shared_ptr</a> library.
|
||
</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>
|