diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2014-10-02 14:20:04 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2014-10-02 14:20:04 +0900 |
commit | 1f13ee1c6326e07d44543811ead3c163aa9eb8c2 (patch) | |
tree | 4b53cc5e39f42a97f301e249942c88f19d50c520 /languages | |
parent | 71274a73929dd42781dee71c64b4b2a65c1795fa (diff) | |
download | tdevelop-1f13ee1c6326e07d44543811ead3c163aa9eb8c2.tar.gz tdevelop-1f13ee1c6326e07d44543811ead3c163aa9eb8c2.zip |
Updated C++ Annotations TDevelop documentation toc file. This relates to bug 1859.
Diffstat (limited to 'languages')
-rw-r--r-- | languages/cpp/doc/cppannotations.toc | 1111 |
1 files changed, 728 insertions, 383 deletions
diff --git a/languages/cpp/doc/cppannotations.toc b/languages/cpp/doc/cppannotations.toc index e4d538c5..7631c681 100644 --- a/languages/cpp/doc/cppannotations.toc +++ b/languages/cpp/doc/cppannotations.toc @@ -3,450 +3,795 @@ <title>C++ Annotations</title> <base href="http://www.icce.rug.nl/documents/cplusplus/"/> -<tocsect1 name="Chapter 1: Overview of the chapters" url="cplusplus01.html#l1" /> +<tocsect1 name="Chapter 1: Overview Of The Chapters" url="cplusplus01.html#l1"/> + <tocsect1 name="Chapter 2: Introduction" url="cplusplus02.html#l2"> <tocsect2 name="2.1: What's new in the C++ Annotations" url="cplusplus02.html#l3"/> - <tocsect2 name="2.2: Free Lectures in C++" url="cplusplus02.html#l4"/> - <tocsect2 name="2.3: The history of C++" url="cplusplus02.html#l5"> - <tocsect3 name="2.3.1: History of the C++ Annotations" url="cplusplus02.html#l6"/> - <tocsect3 name="2.3.2: Compiling a C program by a C++ compiler" url="cplusplus02.html#l7"/> - <tocsect3 name="2.3.3: Compiling a C++ program" url="cplusplus02.html#l8"> - <tocsect4 name="2.3.3.1: C++ under MS-Windows" url="cplusplus02.html#l9"/> - <tocsect4 name="2.3.3.2: Compiling a C++ source text" url="cplusplus02.html#l10"/> + <tocsect2 name="2.2: C++'s history" url="cplusplus02.html#l4"> + <tocsect3 name="2.2.1: History of the C++ Annotations" url="cplusplus02.html#l5"/> + <tocsect3 name="2.2.2: Compiling a C program using a C++ compiler" url="cplusplus02.html#l6"/> + <tocsect3 name="2.2.3: Compiling a C++ program" url="cplusplus02.html#l7"> + <tocsect4 name="2.2.3.1: C++ under MS-Windows" url="cplusplus02.html#l8"/> + <tocsect4 name="2.2.3.2: Compiling a C++ source text" url="cplusplus02.html#l9"/> </tocsect3> </tocsect2> - <tocsect2 name="2.4: Advantages and pretensions of C++" url="cplusplus02.html#l11"/> - <tocsect2 name="2.5: What is Object-Oriented Programming?" url="cplusplus02.html#l12"/> - <tocsect2 name="2.6: Differences between C and C++" url="cplusplus02.html#l13"> + <tocsect2 name="2.3: C++: advantages and claims" url="cplusplus02.html#l10"/> + <tocsect2 name="2.4: What is Object-Oriented Programming?" url="cplusplus02.html#l11"/> + <tocsect2 name="2.5: Differences between C and C++" url="cplusplus02.html#l12"> + <tocsect3 name="2.5.1: The function `main'" url="cplusplus02.html#l13"/> + <tocsect3 name="2.5.2: End-of-line comment" url="cplusplus02.html#l14"/> + <tocsect3 name="2.5.3: Strict type checking" url="cplusplus02.html#l15"/> + <tocsect3 name="2.5.4: Function Overloading" url="cplusplus02.html#l16"/> + <tocsect3 name="2.5.5: Default function arguments" url="cplusplus02.html#l17"/> + <tocsect3 name="2.5.6: NULL-pointers vs. 0-pointers and nullptr" url="cplusplus02.html#l18"/> + <tocsect3 name="2.5.7: The `void' parameter list" url="cplusplus02.html#l19"/> + <tocsect3 name="2.5.8: The `#define __cplusplus'" url="cplusplus02.html#l20"/> + <tocsect3 name="2.5.9: Using standard C functions" url="cplusplus02.html#l21"/> + <tocsect3 name="2.5.10: Header files for both C and C++" url="cplusplus02.html#l22"/> + <tocsect3 name="2.5.11: Defining local variables" url="cplusplus02.html#l23"/> + <tocsect3 name="2.5.12: The keyword `typedef'" url="cplusplus02.html#l24"/> + <tocsect3 name="2.5.13: Functions as part of a struct" url="cplusplus02.html#l25"/> </tocsect2> </tocsect1> -<tocsect1 name="Chapter 3: A first impression of C++" url="cplusplus03.html#l32"> - <tocsect2 name="3.1: More extensions to C in C++" url="cplusplus03.html#l33"> - <tocsect3 name="3.1.1: The scope resolution operator ::" url="cplusplus03.html#l34"/> - <tocsect3 name="3.1.2: `cout', `cin' and `cerr'" url="cplusplus03.html#l35"/> - <tocsect3 name="3.1.3: The keyword `const'" url="cplusplus03.html#l36"/> - <tocsect3 name="3.1.4: References" url="cplusplus03.html#l37"/> - </tocsect2> - <tocsect2 name="3.2: Functions as part of structs" url="cplusplus03.html#l38"/> - <tocsect2 name="3.3: Several new data types" url="cplusplus03.html#l39"> - <tocsect3 name="3.3.1: The `bool' data type" url="cplusplus03.html#l40"/> - <tocsect3 name="3.3.2: The `wchar_t' data type" url="cplusplus03.html#l41"/> - </tocsect2> - <tocsect2 name="3.4: Data hiding: public, private and class" url="cplusplus03.html#l42"/> - <tocsect2 name="3.5: Structs in C vs. structs in C++" url="cplusplus03.html#l43"/> - <tocsect2 name="3.6: Namespaces" url="cplusplus03.html#l44"> - <tocsect3 name="3.6.1: Defining namespaces" url="cplusplus03.html#l45"> - <tocsect4 name="3.6.1.1: Declaring entities in namespaces" url="cplusplus03.html#l46"/> - <tocsect4 name="3.6.1.2: A closed namespace " url="cplusplus03.html#l47"/> - </tocsect3> - <tocsect3 name="3.6.2: Referring to entities" url="cplusplus03.html#l48"> - <tocsect4 name="3.6.2.1: The `using' directive " url="cplusplus03.html#l49"/> - <tocsect4 name="3.6.2.2: `Koenig lookup' " url="cplusplus03.html#l50"/> - </tocsect3> - <tocsect3 name="3.6.3: The standard namespace" url="cplusplus03.html#l51"/> - <tocsect3 name="3.6.4: Nesting namespaces and namespace aliasing" url="cplusplus03.html#l52"> - <tocsect4 name="3.6.4.1: Defining entities outside of their namespaces" url="cplusplus03.html#l53"/> - </tocsect3> - </tocsect2> +<tocsect1 name="Chapter 3: A First Impression Of C++" url="cplusplus03.html#l26"> + <tocsect2 name="3.1: Extensions to C" url="cplusplus03.html#l27"> + <tocsect3 name="3.1.1: Namespaces" url="cplusplus03.html#l28"/> + <tocsect3 name="3.1.2: The scope resolution operator ::" url="cplusplus03.html#l29"/> + <tocsect3 name="3.1.3: Using the keyword `const'" url="cplusplus03.html#l30"/> + <tocsect3 name="3.1.4: `cout', `cin', and `cerr'" url="cplusplus03.html#l31"/> + </tocsect2> + <tocsect2 name="3.2: Functions as part of structs" url="cplusplus03.html#l32"> + <tocsect3 name="3.2.1: Data hiding: public, private and class" url="cplusplus03.html#l33"/> + <tocsect3 name="3.2.2: Structs in C vs. structs in C++" url="cplusplus03.html#l34"/> + </tocsect2> + <tocsect2 name="3.3: More extensions to C" url="cplusplus03.html#l35"> + <tocsect3 name="3.3.1: References" url="cplusplus03.html#l36"/> + <tocsect3 name="3.3.2: Rvalue References" url="cplusplus03.html#l37"/> + <tocsect3 name="3.3.3: Strongly typed enumerations" url="cplusplus03.html#l38"/> + <tocsect3 name="3.3.4: Initializer lists" url="cplusplus03.html#l39"/> + <tocsect3 name="3.3.5: Type inference using `auto'" url="cplusplus03.html#l40"/> + <tocsect3 name="3.3.6: Defining types and 'using' declarations" url="cplusplus03.html#l41"/> + <tocsect3 name="3.3.7: Range-based for-loops" url="cplusplus03.html#l42"/> + <tocsect3 name="3.3.8: Raw String Literals" url="cplusplus03.html#l43"/> + </tocsect2> + <tocsect2 name="3.4: New language-defined data types" url="cplusplus03.html#l44"> + <tocsect3 name="3.4.1: The data type `bool'" url="cplusplus03.html#l45"/> + <tocsect3 name="3.4.2: The data type `wchar_t'" url="cplusplus03.html#l46"/> + <tocsect3 name="3.4.3: Unicode encoding" url="cplusplus03.html#l47"/> + <tocsect3 name="3.4.4: The data type `long long int'" url="cplusplus03.html#l48"/> + <tocsect3 name="3.4.5: The data type `size_t'" url="cplusplus03.html#l49"/> + </tocsect2> + <tocsect2 name="3.5: A new syntax for casts" url="cplusplus03.html#l50"> + <tocsect3 name="3.5.1: The `static_cast'-operator" url="cplusplus03.html#l51"/> + <tocsect3 name="3.5.2: The `const_cast'-operator" url="cplusplus03.html#l52"/> + <tocsect3 name="3.5.3: The `reinterpret_cast'-operator" url="cplusplus03.html#l53"/> + <tocsect3 name="3.5.4: The `dynamic_cast'-operator" url="cplusplus03.html#l54"/> + <tocsect3 name="3.5.5: Casting 'shared_ptr' objects" url="cplusplus03.html#l55"/> + </tocsect2> + <tocsect2 name="3.6: Keywords and reserved names in C++" url="cplusplus03.html#l56"/> </tocsect1> -<tocsect1 name="Chapter 4: The `string' data type" url="cplusplus04.html#l54"> - <tocsect2 name="4.1: Operations on strings" url="cplusplus04.html#l55"/> - <tocsect2 name="4.2: Overview of operations on strings" url="cplusplus04.html#l56"> - <tocsect3 name="4.2.1: The string initializers" url="cplusplus04.html#l57"/> - <tocsect3 name="4.2.2: The string iterators" url="cplusplus04.html#l58"/> - <tocsect3 name="4.2.3: The string operators" url="cplusplus04.html#l59"/> - <tocsect3 name="4.2.4: The string member functions" url="cplusplus04.html#l60"/> +<tocsect1 name="Chapter 4: Name Spaces" url="cplusplus04.html#l57"> + <tocsect2 name="4.1: Namespaces" url="cplusplus04.html#l58"> + <tocsect3 name="4.1.1: Defining namespaces" url="cplusplus04.html#l59"> + <tocsect4 name="4.1.1.1: Declaring entities in namespaces" url="cplusplus04.html#l60"/> + <tocsect4 name="4.1.1.2: A closed namespace" url="cplusplus04.html#l61"/> + </tocsect3> + <tocsect3 name="4.1.2: Referring to entities" url="cplusplus04.html#l62"> + <tocsect4 name="4.1.2.1: The `using' directive" url="cplusplus04.html#l63"/> + <tocsect4 name="4.1.2.2: `Koenig lookup'" url="cplusplus04.html#l64"/> + </tocsect3> + <tocsect3 name="4.1.3: The standard namespace" url="cplusplus04.html#l65"/> + <tocsect3 name="4.1.4: Nesting namespaces and namespace aliasing" url="cplusplus04.html#l66"> + <tocsect4 name="4.1.4.1: Defining entities outside of their namespaces" url="cplusplus04.html#l67"/> + </tocsect3> </tocsect2> </tocsect1> -<tocsect1 name="Chapter 5: The IO-stream Library" url="cplusplus05.html#l61"> - <tocsect2 name="5.1: Iostream header files" url="cplusplus05.html#l62"/> - <tocsect2 name="5.2: The foundation: the class `ios_base'" url="cplusplus05.html#l63"/> - <tocsect2 name="5.3: Interfacing `streambuf' objects: the class `ios'" url="cplusplus05.html#l64"> - <tocsect3 name="5.3.1: Condition states" url="cplusplus05.html#l65"/> - <tocsect3 name="5.3.2: Formatting output and input" url="cplusplus05.html#l66"> - <tocsect4 name="5.3.2.1: Formatting flags" url="cplusplus05.html#l67"/> - <tocsect4 name="5.3.2.2: Format modifying member functions" url="cplusplus05.html#l68"/> - </tocsect3> - </tocsect2> - <tocsect2 name="5.4: Output" url="cplusplus05.html#l69"> - <tocsect3 name="5.4.1: Basic output: the class `ostream'" url="cplusplus05.html#l70"> - <tocsect4 name="5.4.1.1: Writing to `ostream' objects" url="cplusplus05.html#l71"/> - <tocsect4 name="5.4.1.2: `ostream' positioning" url="cplusplus05.html#l72"/> - <tocsect4 name="5.4.1.3: `ostream' flushing" url="cplusplus05.html#l73"/> - </tocsect3> - <tocsect3 name="5.4.2: Output to files: the class `ofstream'" url="cplusplus05.html#l74"> - <tocsect4 name="5.4.2.1: Modes for opening stream objects" url="cplusplus05.html#l75"/> - </tocsect3> - <tocsect3 name="5.4.3: Output to memory: the class `ostringstream'" url="cplusplus05.html#l76"/> - </tocsect2> - <tocsect2 name="5.5: Input" url="cplusplus05.html#l77"> - <tocsect3 name="5.5.1: Basic input: the class `istream'" url="cplusplus05.html#l78"> - <tocsect4 name="5.5.1.1: Reading from `istream' objects" url="cplusplus05.html#l79"/> - <tocsect4 name="5.5.1.2: `istream' positioning" url="cplusplus05.html#l80"/> - </tocsect3> - <tocsect3 name="5.5.2: Input from streams: the class `ifstream'" url="cplusplus05.html#l81"/> - <tocsect3 name="5.5.3: Input from memory: the class `istringstream'" url="cplusplus05.html#l82"/> - </tocsect2> - <tocsect2 name="5.6: Manipulators" url="cplusplus05.html#l83"/> - <tocsect2 name="5.7: The `streambuf' class" url="cplusplus05.html#l84"> - <tocsect3 name="5.7.1: Protected `streambuf' members" url="cplusplus05.html#l85"/> - <tocsect3 name="5.7.2: The class `filebuf'" url="cplusplus05.html#l86"/> - </tocsect2> - <tocsect2 name="5.8: Advanced topics" url="cplusplus05.html#l87"> - <tocsect3 name="5.8.1: Copying streams" url="cplusplus05.html#l88"/> - <tocsect3 name="5.8.2: Coupling streams" url="cplusplus05.html#l89"/> - <tocsect3 name="5.8.3: Redirection using streams" url="cplusplus05.html#l90"/> - <tocsect3 name="5.8.4: Reading AND Writing to a stream" url="cplusplus05.html#l91"/> +<tocsect1 name="Chapter 5: The `string' Data Type" url="cplusplus05.html#l68"> + <tocsect2 name="5.1: Operations on strings" url="cplusplus05.html#l69"/> + <tocsect2 name="5.2: A std::string reference" url="cplusplus05.html#l70"> + <tocsect3 name="5.2.1: Initializers" url="cplusplus05.html#l71"/> + <tocsect3 name="5.2.2: Iterators" url="cplusplus05.html#l72"/> + <tocsect3 name="5.2.3: Operators" url="cplusplus05.html#l73"/> + <tocsect3 name="5.2.4: Member functions" url="cplusplus05.html#l74"/> + <tocsect3 name="5.2.5: Conversion functions" url="cplusplus05.html#l75"/> </tocsect2> </tocsect1> -<tocsect1 name="Chapter 6: Classes" url="cplusplus06.html#l92"> - <tocsect2 name="6.1: The constructor" url="cplusplus06.html#l93"> - <tocsect3 name="6.1.1: A first application" url="cplusplus06.html#l94"/> - <tocsect3 name="6.1.2: Constructors: with and without arguments" url="cplusplus06.html#l95"> - <tocsect4 name="6.1.2.1: The order of construction" url="cplusplus06.html#l96"/> +<tocsect1 name="Chapter 6: The IO-stream Library" url="cplusplus06.html#l76"> + <tocsect2 name="6.1: Special header files" url="cplusplus06.html#l77"/> + <tocsect2 name="6.2: The foundation: the class `ios_base'" url="cplusplus06.html#l78"/> + <tocsect2 name="6.3: Interfacing `streambuf' objects: the class `ios'" url="cplusplus06.html#l79"> + <tocsect3 name="6.3.1: Condition states" url="cplusplus06.html#l80"/> + <tocsect3 name="6.3.2: Formatting output and input" url="cplusplus06.html#l81"> + <tocsect4 name="6.3.2.1: Format modifying member functions" url="cplusplus06.html#l82"/> + <tocsect4 name="6.3.2.2: Formatting flags" url="cplusplus06.html#l83"/> </tocsect3> </tocsect2> - <tocsect2 name="6.2: Const member functions and const objects" url="cplusplus06.html#l97"/> - <tocsect2 name="6.3: The keyword `inline'" url="cplusplus06.html#l98"> - <tocsect3 name="6.3.1: Inline functions within class declarations" url="cplusplus06.html#l99"/> - <tocsect3 name="6.3.2: Inline functions outside of class declarations" url="cplusplus06.html#l100"/> - <tocsect3 name="6.3.3: When to use inline functions" url="cplusplus06.html#l101"/> + <tocsect2 name="6.4: Output" url="cplusplus06.html#l84"> + <tocsect3 name="6.4.1: Basic output: the class `ostream'" url="cplusplus06.html#l85"> + <tocsect4 name="6.4.1.1: Writing to `ostream' objects" url="cplusplus06.html#l86"/> + <tocsect4 name="6.4.1.2: `ostream' positioning" url="cplusplus06.html#l87"/> + <tocsect4 name="6.4.1.3: `ostream' flushing" url="cplusplus06.html#l88"/> + </tocsect3> + <tocsect3 name="6.4.2: Output to files: the class `ofstream'" url="cplusplus06.html#l89"> + <tocsect4 name="6.4.2.1: Modes for opening stream objects" url="cplusplus06.html#l90"/> + </tocsect3> + <tocsect3 name="6.4.3: Output to memory: the class `ostringstream'" url="cplusplus06.html#l91"/> </tocsect2> - <tocsect2 name="6.4: Objects in objects: composition" url="cplusplus06.html#l102"> - <tocsect3 name="6.4.1: Composition and const objects: const member initializers" url="cplusplus06.html#l103"/> - <tocsect3 name="6.4.2: Composition and reference objects: reference member initializers" url="cplusplus06.html#l104"/> + <tocsect2 name="6.5: Input" url="cplusplus06.html#l92"> + <tocsect3 name="6.5.1: Basic input: the class `istream'" url="cplusplus06.html#l93"> + <tocsect4 name="6.5.1.1: Reading from `istream' objects" url="cplusplus06.html#l94"/> + <tocsect4 name="6.5.1.2: `istream' positioning" url="cplusplus06.html#l95"/> + </tocsect3> + <tocsect3 name="6.5.2: Input from files: the class `ifstream'" url="cplusplus06.html#l96"/> + <tocsect3 name="6.5.3: Input from memory: the class `istringstream'" url="cplusplus06.html#l97"/> + <tocsect3 name="6.5.4: Copying streams" url="cplusplus06.html#l98"/> + <tocsect3 name="6.5.5: Coupling streams" url="cplusplus06.html#l99"/> </tocsect2> - <tocsect2 name="6.5: Header file organization with classes" url="cplusplus06.html#l105"> - <tocsect3 name="6.5.1: Using namespaces in header files" url="cplusplus06.html#l106"/> + <tocsect2 name="6.6: Advanced topics" url="cplusplus06.html#l100"> + <tocsect3 name="6.6.1: Redirecting streams" url="cplusplus06.html#l101"/> + <tocsect3 name="6.6.2: Reading AND Writing streams" url="cplusplus06.html#l102"/> </tocsect2> - <tocsect2 name="6.6: The keyword `mutable'" url="cplusplus06.html#l107"/> </tocsect1> -<tocsect1 name="Chapter 7: Classes and memory allocation" url="cplusplus07.html#l108"> - <tocsect2 name="7.1: The operators `new' and `delete'" url="cplusplus07.html#l109"> - <tocsect3 name="7.1.1: Allocating arrays" url="cplusplus07.html#l110"/> - <tocsect3 name="7.1.2: Deleting arrays" url="cplusplus07.html#l111"/> - <tocsect3 name="7.1.3: Enlarging arrays" url="cplusplus07.html#l112"/> +<tocsect1 name="Chapter 7: Classes" url="cplusplus07.html#l103"> + <tocsect2 name="7.1: The constructor" url="cplusplus07.html#l104"> + <tocsect3 name="7.1.1: A first application" url="cplusplus07.html#l105"/> + <tocsect3 name="7.1.2: Constructors: with and without arguments" url="cplusplus07.html#l106"> + <tocsect4 name="7.1.2.1: The order of construction" url="cplusplus07.html#l107"/> + </tocsect3> + </tocsect2> + <tocsect2 name="7.2: Ambiguity resolution" url="cplusplus07.html#l108"> + <tocsect3 name="7.2.1: Types `Data' vs. `Data()'" url="cplusplus07.html#l109"/> + <tocsect3 name="7.2.2: Superfluous parentheses" url="cplusplus07.html#l110"/> + <tocsect3 name="7.2.3: Existing types" url="cplusplus07.html#l111"/> + </tocsect2> + <tocsect2 name="7.3: Objects inside objects: composition" url="cplusplus07.html#l112"> + <tocsect3 name="7.3.1: Composition and const objects: const member initializers" url="cplusplus07.html#l113"/> + <tocsect3 name="7.3.2: Composition and reference objects: reference member initializers" url="cplusplus07.html#l114"/> </tocsect2> - <tocsect2 name="7.2: The destructor" url="cplusplus07.html#l113"> - <tocsect3 name="7.2.1: New and delete and object pointers" url="cplusplus07.html#l114"/> - <tocsect3 name="7.2.2: The function set_new_handler()" url="cplusplus07.html#l115"/> + <tocsect2 name="7.4: Data member initializers" url="cplusplus07.html#l115"> + <tocsect3 name="7.4.1: Delegating constructors" url="cplusplus07.html#l116"/> </tocsect2> - <tocsect2 name="7.3: The assignment operator" url="cplusplus07.html#l116"> - <tocsect3 name="7.3.1: Overloading the assignment operator" url="cplusplus07.html#l117"> - <tocsect4 name="7.3.1.1: The function 'operator=()'" url="cplusplus07.html#l118"/> + <tocsect2 name="7.5: Uniform initialization" url="cplusplus07.html#l117"/> + <tocsect2 name="7.6: Defaulted and deleted class members" url="cplusplus07.html#l118"/> + <tocsect2 name="7.7: Const member functions and const objects" url="cplusplus07.html#l119"> + <tocsect3 name="7.7.1: Anonymous objects" url="cplusplus07.html#l120"> + <tocsect4 name="7.7.1.1: Subtleties with anonymous objects" url="cplusplus07.html#l121"/> </tocsect3> </tocsect2> - <tocsect2 name="7.4: The this pointer" url="cplusplus07.html#l119"> - <tocsect3 name="7.4.1: Preventing self-destruction with this" url="cplusplus07.html#l120"/> - <tocsect3 name="7.4.2: Associativity of operators and this" url="cplusplus07.html#l121"/> + <tocsect2 name="7.8: The keyword `inline'" url="cplusplus07.html#l122"> + <tocsect3 name="7.8.1: Defining members inline" url="cplusplus07.html#l123"/> + <tocsect3 name="7.8.2: When to use inline functions" url="cplusplus07.html#l124"> + <tocsect4 name="7.8.2.1: A prelude: when NOT to use inline functions" url="cplusplus07.html#l125"/> + </tocsect3> </tocsect2> - <tocsect2 name="7.5: The copy constructor: Initialization vs. Assignment" url="cplusplus07.html#l122"> - <tocsect3 name="7.5.1: Similarities between the copy constructor and operator=()" url="cplusplus07.html#l123"/> - <tocsect3 name="7.5.2: Preventing the use of certain member functions" url="cplusplus07.html#l124"/> + <tocsect2 name="7.9: Local classes: classes inside functions" url="cplusplus07.html#l126"/> + <tocsect2 name="7.10: The keyword `mutable'" url="cplusplus07.html#l127"/> + <tocsect2 name="7.11: Header file organization" url="cplusplus07.html#l128"> + <tocsect3 name="7.11.1: Using namespaces in header files" url="cplusplus07.html#l129"/> </tocsect2> - <tocsect2 name="7.6: Conclusion" url="cplusplus07.html#l125"/> + <tocsect2 name="7.12: Sizeof applied to class data members" url="cplusplus07.html#l130"/> </tocsect1> -<tocsect1 name="Chapter 8: Exceptions" url="cplusplus08.html#l126"> - <tocsect2 name="8.1: Using exceptions: syntax elements" url="cplusplus08.html#l127"/> - <tocsect2 name="8.2: An example using exceptions" url="cplusplus08.html#l128"> - <tocsect3 name="8.2.1: No exceptions: `setjmp()' and `longjmp()'" url="cplusplus08.html#l129"/> - <tocsect3 name="8.2.2: Exceptions: the preferred alternative" url="cplusplus08.html#l130"/> +<tocsect1 name="Chapter 8: Static Data And Functions" url="cplusplus08.html#l131"> + <tocsect2 name="8.1: Static data" url="cplusplus08.html#l132"> + <tocsect3 name="8.1.1: Private static data" url="cplusplus08.html#l133"/> + <tocsect3 name="8.1.2: Public static data" url="cplusplus08.html#l134"/> + <tocsect3 name="8.1.3: Initializing static const data" url="cplusplus08.html#l135"/> + <tocsect3 name="8.1.4: Generalized constant expressions (constexpr)" url="cplusplus08.html#l136"> + <tocsect4 name="8.1.4.1: Constant expression data" url="cplusplus08.html#l137"/> + </tocsect3> </tocsect2> - <tocsect2 name="8.3: Throwing exceptions" url="cplusplus08.html#l131"> - <tocsect3 name="8.3.1: The empty `throw' statement" url="cplusplus08.html#l132"/> + <tocsect2 name="8.2: Static member functions" url="cplusplus08.html#l138"> + <tocsect3 name="8.2.1: Calling conventions" url="cplusplus08.html#l139"/> </tocsect2> - <tocsect2 name="8.4: The try block" url="cplusplus08.html#l133"/> - <tocsect2 name="8.5: Catching exceptions" url="cplusplus08.html#l134"> - <tocsect3 name="8.5.1: The default catcher" url="cplusplus08.html#l135"/> +</tocsect1> + +<tocsect1 name="Chapter 9: Classes And Memory Allocation" url="cplusplus09.html#l140"> + <tocsect2 name="9.1: Operators `new' and `delete'" url="cplusplus09.html#l141"> + <tocsect3 name="9.1.1: Allocating arrays" url="cplusplus09.html#l142"/> + <tocsect3 name="9.1.2: Deleting arrays" url="cplusplus09.html#l143"/> + <tocsect3 name="9.1.3: Enlarging arrays" url="cplusplus09.html#l144"/> + <tocsect3 name="9.1.4: Managing `raw' memory" url="cplusplus09.html#l145"/> + <tocsect3 name="9.1.5: The `placement new' operator" url="cplusplus09.html#l146"/> + </tocsect2> + <tocsect2 name="9.2: The destructor" url="cplusplus09.html#l147"> + <tocsect3 name="9.2.1: Object pointers revisited" url="cplusplus09.html#l148"/> + <tocsect3 name="9.2.2: The function set_new_handler()" url="cplusplus09.html#l149"/> + </tocsect2> + <tocsect2 name="9.3: The assignment operator" url="cplusplus09.html#l150"> + <tocsect3 name="9.3.1: Overloading the assignment operator" url="cplusplus09.html#l151"> + <tocsect4 name="9.3.1.1: The member 'operator=()'" url="cplusplus09.html#l152"/> + </tocsect3> + </tocsect2> + <tocsect2 name="9.4: The `this' pointer" url="cplusplus09.html#l153"> + <tocsect3 name="9.4.1: Sequential assignments and this" url="cplusplus09.html#l154"/> + </tocsect2> + <tocsect2 name="9.5: The copy constructor: initialization vs. assignment" url="cplusplus09.html#l155"/> + <tocsect2 name="9.6: Revising the assignment operator" url="cplusplus09.html#l156"> + <tocsect3 name="9.6.1: Swapping" url="cplusplus09.html#l157"> + <tocsect4 name="9.6.1.1: Fast swapping" url="cplusplus09.html#l158"/> + </tocsect3> </tocsect2> - <tocsect2 name="8.6: Declaring exception throwers" url="cplusplus08.html#l136"/> - <tocsect2 name="8.7: Iostreams and exceptions" url="cplusplus08.html#l137"/> + <tocsect2 name="9.7: Moving data" url="cplusplus09.html#l159"> + <tocsect3 name="9.7.1: The move constructor (dynamic data)" url="cplusplus09.html#l160"/> + <tocsect3 name="9.7.2: The move constructor (composition)" url="cplusplus09.html#l161"/> + <tocsect3 name="9.7.3: Move-assignment" url="cplusplus09.html#l162"/> + <tocsect3 name="9.7.4: Revising the assignment operator (part II)" url="cplusplus09.html#l163"/> + <tocsect3 name="9.7.5: Moving and the destructor" url="cplusplus09.html#l164"/> + <tocsect3 name="9.7.6: Move-only classes" url="cplusplus09.html#l165"/> + <tocsect3 name="9.7.7: Default move constructors and assignment operators" url="cplusplus09.html#l166"/> + <tocsect3 name="9.7.8: Moving: implications for class design" url="cplusplus09.html#l167"/> + </tocsect2> + <tocsect2 name="9.8: Copy Elision and Return Value Optimization" url="cplusplus09.html#l168"/> + <tocsect2 name="9.9: Plain Old Data" url="cplusplus09.html#l169"/> + <tocsect2 name="9.10: Conclusion" url="cplusplus09.html#l170"/> </tocsect1> -<tocsect1 name="Chapter 9: More Operator Overloading" url="cplusplus09.html#l138"> - <tocsect2 name="9.1: Overloading `operator[]()'" url="cplusplus09.html#l139"/> - <tocsect2 name="9.2: Overloading the insertion and extraction operators" url="cplusplus09.html#l140"/> - <tocsect2 name="9.3: Conversion operators" url="cplusplus09.html#l141"/> - <tocsect2 name="9.4: The `explicit' keyword" url="cplusplus09.html#l142"/> - <tocsect2 name="9.5: Overloading increment and decrement" url="cplusplus09.html#l143"/> - <tocsect2 name="9.6: Overloading `operator new(size_t)'" url="cplusplus09.html#l144"/> - <tocsect2 name="9.7: Overloading `operator delete(void *)'" url="cplusplus09.html#l145"/> - <tocsect2 name="9.8: Operators `new[]' and `delete[]'" url="cplusplus09.html#l146"/> - <tocsect2 name="9.9: Function Objects" url="cplusplus09.html#l147"> - <tocsect3 name="9.9.1: Constructing manipulators" url="cplusplus09.html#l148"> - <tocsect4 name="9.9.1.1: Manipulators requiring arguments" url="cplusplus09.html#l149"/> - </tocsect3> - </tocsect2> - <tocsect2 name="9.10: Overloadable Operators" url="cplusplus09.html#l150"/> +<tocsect1 name="Chapter 10: Exceptions" url="cplusplus10.html#l171"> + <tocsect2 name="10.1: Exception syntax" url="cplusplus10.html#l172"/> + <tocsect2 name="10.2: An example using exceptions" url="cplusplus10.html#l173"> + <tocsect3 name="10.2.1: Anachronisms: `setjmp' and `longjmp'" url="cplusplus10.html#l174"/> + <tocsect3 name="10.2.2: Exceptions: the preferred alternative" url="cplusplus10.html#l175"/> + </tocsect2> + <tocsect2 name="10.3: Throwing exceptions" url="cplusplus10.html#l176"> + <tocsect3 name="10.3.1: The empty `throw' statement" url="cplusplus10.html#l177"/> + </tocsect2> + <tocsect2 name="10.4: The try block" url="cplusplus10.html#l178"/> + <tocsect2 name="10.5: Catching exceptions" url="cplusplus10.html#l179"> + <tocsect3 name="10.5.1: The default catcher" url="cplusplus10.html#l180"/> + </tocsect2> + <tocsect2 name="10.6: Declaring exception throwers (deprecated)" url="cplusplus10.html#l181"/> + <tocsect2 name="10.7: Iostreams and exceptions" url="cplusplus10.html#l182"/> + <tocsect2 name="10.8: Standard Exceptions" url="cplusplus10.html#l183"/> + <tocsect2 name="10.9: System error, error code and error category" url="cplusplus10.html#l184"> + <tocsect3 name="10.9.1: The class `error_code'" url="cplusplus10.html#l185"/> + <tocsect3 name="10.9.2: The class `error_category'" url="cplusplus10.html#l186"/> + </tocsect2> + <tocsect2 name="10.10: Exception guarantees" url="cplusplus10.html#l187"> + <tocsect3 name="10.10.1: The basic guarantee" url="cplusplus10.html#l188"/> + <tocsect3 name="10.10.2: The strong guarantee" url="cplusplus10.html#l189"/> + <tocsect3 name="10.10.3: The nothrow guarantee" url="cplusplus10.html#l190"/> + </tocsect2> + <tocsect2 name="10.11: Function try blocks" url="cplusplus10.html#l191"/> + <tocsect2 name="10.12: Exceptions in constructors and destructors" url="cplusplus10.html#l192"/> </tocsect1> -<tocsect1 name="Chapter 10: Static data and functions" url="cplusplus10.html#l151"> - <tocsect2 name="10.1: Static data" url="cplusplus10.html#l152"> - <tocsect3 name="10.1.1: Private static data" url="cplusplus10.html#l153"/> - <tocsect3 name="10.1.2: Public static data" url="cplusplus10.html#l154"/> +<tocsect1 name="Chapter 11: More Operator Overloading" url="cplusplus11.html#l193"> + <tocsect2 name="11.1: Overloading `operator[]()'" url="cplusplus11.html#l194"/> + <tocsect2 name="11.2: Overloading the insertion and extraction operators" url="cplusplus11.html#l195"/> + <tocsect2 name="11.3: Conversion operators" url="cplusplus11.html#l196"/> + <tocsect2 name="11.4: The keyword `explicit'" url="cplusplus11.html#l197"> + <tocsect3 name="11.4.1: Explicit conversion operators" url="cplusplus11.html#l198"/> + </tocsect2> + <tocsect2 name="11.5: Overloading the increment and decrement operators" url="cplusplus11.html#l199"/> + <tocsect2 name="11.6: Overloading binary operators" url="cplusplus11.html#l200"/> + <tocsect2 name="11.7: Overloading `operator new(size_t)'" url="cplusplus11.html#l201"/> + <tocsect2 name="11.8: Overloading `operator delete(void *)'" url="cplusplus11.html#l202"/> + <tocsect2 name="11.9: Operators `new[]' and `delete[]'" url="cplusplus11.html#l203"> + <tocsect3 name="11.9.1: Overloading `new[]'" url="cplusplus11.html#l204"/> + <tocsect3 name="11.9.2: Overloading `delete[]'" url="cplusplus11.html#l205"/> + <tocsect3 name="11.9.3: `new[]', `delete[]' and exceptions" url="cplusplus11.html#l206"/> + </tocsect2> + <tocsect2 name="11.10: Function Objects" url="cplusplus11.html#l207"> + <tocsect3 name="11.10.1: Constructing manipulators" url="cplusplus11.html#l208"> + <tocsect4 name="11.10.1.1: Manipulators requiring arguments" url="cplusplus11.html#l209"/> + </tocsect3> </tocsect2> - <tocsect2 name="10.2: Static member functions" url="cplusplus10.html#l155"/> + <tocsect2 name="11.11: The case of [io]fstream::open()" url="cplusplus11.html#l210"/> + <tocsect2 name="11.12: User-defined literals" url="cplusplus11.html#l211"/> + <tocsect2 name="11.13: Overloadable operators" url="cplusplus11.html#l212"/> </tocsect1> -<tocsect1 name="Chapter 11: Friends" url="cplusplus11.html#l156"> - <tocsect2 name="11.1: Friend-functions" url="cplusplus11.html#l157"/> - <tocsect2 name="11.2: Inline friends" url="cplusplus11.html#l158"/> +<tocsect1 name="Chapter 12: Abstract Containers" url="cplusplus12.html#l213"> + <tocsect2 name="12.1: Notations used in this chapter" url="cplusplus12.html#l214"/> + <tocsect2 name="12.2: The `pair' container" url="cplusplus12.html#l215"/> + <tocsect2 name="12.3: Allocators" url="cplusplus12.html#l216"/> + <tocsect2 name="12.4: Available Containers" url="cplusplus12.html#l217"> + <tocsect3 name="12.4.1: ARRAY" url="cplusplus12.html#l218"/> + <tocsect3 name="12.4.2: The `vector' container" url="cplusplus12.html#l219"/> + <tocsect3 name="12.4.3: The `list' container" url="cplusplus12.html#l220"/> + <tocsect3 name="12.4.4: The `queue' container" url="cplusplus12.html#l221"/> + <tocsect3 name="12.4.5: The `priority_queue' container" url="cplusplus12.html#l222"/> + <tocsect3 name="12.4.6: The `deque' container" url="cplusplus12.html#l223"/> + <tocsect3 name="12.4.7: The `map' container" url="cplusplus12.html#l224"> + <tocsect4 name="12.4.7.1: The `map' constructors" url="cplusplus12.html#l225"/> + <tocsect4 name="12.4.7.2: The `map' operators" url="cplusplus12.html#l226"/> + <tocsect4 name="12.4.7.3: The `map' public members" url="cplusplus12.html#l227"/> + <tocsect4 name="12.4.7.4: The `map': a simple example" url="cplusplus12.html#l228"/> + </tocsect3> + <tocsect3 name="12.4.8: The `multimap' container" url="cplusplus12.html#l229"/> + <tocsect3 name="12.4.9: The `set' container" url="cplusplus12.html#l230"/> + <tocsect3 name="12.4.10: The `multiset' container" url="cplusplus12.html#l231"/> + <tocsect3 name="12.4.11: The `stack' container" url="cplusplus12.html#l232"/> + <tocsect3 name="12.4.12: The `unordered_map' container (`hash table')" url="cplusplus12.html#l233"> + <tocsect4 name="12.4.12.1: The `unordered_map' constructors" url="cplusplus12.html#l234"/> + <tocsect4 name="12.4.12.2: The `unordered_map' public members" url="cplusplus12.html#l235"/> + <tocsect4 name="12.4.12.3: The `unordered_multimap' container" url="cplusplus12.html#l236"/> + </tocsect3> + <tocsect3 name="12.4.13: The `unordered_set' container" url="cplusplus12.html#l237"> + <tocsect4 name="12.4.13.1: The `unordered_multiset' container" url="cplusplus12.html#l238"/> + </tocsect3> + </tocsect2> + <tocsect2 name="12.5: Regular Expressions" url="cplusplus12.html#l239"/> + <tocsect2 name="12.6: The `complex' container" url="cplusplus12.html#l240"/> + <tocsect2 name="12.7: Unrestricted Unions" url="cplusplus12.html#l241"> + <tocsect3 name="12.7.1: Implementing the destructor" url="cplusplus12.html#l242"/> + <tocsect3 name="12.7.2: Embedding an unrestricted union in a surrounding class" url="cplusplus12.html#l243"/> + <tocsect3 name="12.7.3: Destroying an embedded unrestricted union" url="cplusplus12.html#l244"/> + <tocsect3 name="12.7.4: Copy and move constructors" url="cplusplus12.html#l245"/> + <tocsect3 name="12.7.5: Assignment" url="cplusplus12.html#l246"/> + </tocsect2> </tocsect1> -<tocsect1 name="Chapter 12: Abstract Containers" url="cplusplus12.html#l159"> - <tocsect2 name="12.1: The `pair' container" url="cplusplus12.html#l160"/> - <tocsect2 name="12.2: Sequential Containers" url="cplusplus12.html#l161"> - <tocsect3 name="12.2.1: The `vector' container" url="cplusplus12.html#l162"/> - <tocsect3 name="12.2.2: The `list' container" url="cplusplus12.html#l163"/> - <tocsect3 name="12.2.3: The `queue' container" url="cplusplus12.html#l164"/> - <tocsect3 name="12.2.4: The `priority_queue' container" url="cplusplus12.html#l165"/> - <tocsect3 name="12.2.5: The `deque' container" url="cplusplus12.html#l166"/> - <tocsect3 name="12.2.6: The `map' container" url="cplusplus12.html#l167"/> - <tocsect3 name="12.2.7: The `multimap' container" url="cplusplus12.html#l168"/> - <tocsect3 name="12.2.8: The `set' container" url="cplusplus12.html#l169"/> - <tocsect3 name="12.2.9: The `multiset' container" url="cplusplus12.html#l170"/> - <tocsect3 name="12.2.10: The `stack' container" url="cplusplus12.html#l171"/> - <tocsect3 name="12.2.11: The `hash_map' and other hashing-based containers" url="cplusplus12.html#l172"/> - </tocsect2> - <tocsect2 name="12.3: The `complex' container" url="cplusplus12.html#l173"/> +<tocsect1 name="Chapter 13: Inheritance" url="cplusplus13.html#l247"> + <tocsect2 name="13.1: Related types" url="cplusplus13.html#l248"> + <tocsect3 name="13.1.1: Inheritance depth: desirable?" url="cplusplus13.html#l249"/> + </tocsect2> + <tocsect2 name="13.2: Access rights: public, private, protected" url="cplusplus13.html#l250"> + <tocsect3 name="13.2.1: Public, protected and private derivation" url="cplusplus13.html#l251"/> + <tocsect3 name="13.2.2: Promoting access rights" url="cplusplus13.html#l252"/> + </tocsect2> + <tocsect2 name="13.3: The constructor of a derived class" url="cplusplus13.html#l253"> + <tocsect3 name="13.3.1: Move construction" url="cplusplus13.html#l254"/> + <tocsect3 name="13.3.2: Move assignment" url="cplusplus13.html#l255"/> + <tocsect3 name="13.3.3: Inheriting constructors" url="cplusplus13.html#l256"/> + </tocsect2> + <tocsect2 name="13.4: The destructor of a derived class" url="cplusplus13.html#l257"/> + <tocsect2 name="13.5: Redefining member functions" url="cplusplus13.html#l258"/> + <tocsect2 name="13.6: i/ostream::init" url="cplusplus13.html#l259"/> + <tocsect2 name="13.7: Multiple inheritance" url="cplusplus13.html#l260"/> + <tocsect2 name="13.8: Conversions between base classes and derived classes" url="cplusplus13.html#l261"> + <tocsect3 name="13.8.1: Conversions with object assignments" url="cplusplus13.html#l262"/> + <tocsect3 name="13.8.2: Conversions with pointer assignments" url="cplusplus13.html#l263"/> + </tocsect2> + <tocsect2 name="13.9: Using non-default constructors with new[]" url="cplusplus13.html#l264"/> </tocsect1> -<tocsect1 name="Chapter 13: Inheritance" url="cplusplus13.html#l174"> - <tocsect2 name="13.1: Related types" url="cplusplus13.html#l175"/> - <tocsect2 name="13.2: The constructor of a derived class" url="cplusplus13.html#l176"/> - <tocsect2 name="13.3: The destructor of a derived class" url="cplusplus13.html#l177"/> - <tocsect2 name="13.4: Redefining member functions" url="cplusplus13.html#l178"/> - <tocsect2 name="13.5: Multiple inheritance" url="cplusplus13.html#l179"/> - <tocsect2 name="13.6: Conversions between base classes and derived classes" url="cplusplus13.html#l180"> - <tocsect3 name="13.6.1: Conversions in object assignments" url="cplusplus13.html#l181"/> - <tocsect3 name="13.6.2: Conversions in pointer assignments" url="cplusplus13.html#l182"/> +<tocsect1 name="Chapter 14: Polymorphism" url="cplusplus14.html#l265"> + <tocsect2 name="14.1: Virtual functions" url="cplusplus14.html#l266"/> + <tocsect2 name="14.2: Virtual destructors" url="cplusplus14.html#l267"/> + <tocsect2 name="14.3: Pure virtual functions" url="cplusplus14.html#l268"> + <tocsect3 name="14.3.1: Implementing pure virtual functions" url="cplusplus14.html#l269"/> + </tocsect2> + <tocsect2 name="14.4: Explicit virtual overrides" url="cplusplus14.html#l270"/> + <tocsect2 name="14.5: Virtual functions and multiple inheritance" url="cplusplus14.html#l271"> + <tocsect3 name="14.5.1: Ambiguity in multiple inheritance" url="cplusplus14.html#l272"/> + <tocsect3 name="14.5.2: Virtual base classes" url="cplusplus14.html#l273"/> + <tocsect3 name="14.5.3: When virtual derivation is not appropriate" url="cplusplus14.html#l274"/> + </tocsect2> + <tocsect2 name="14.6: Run-time type identification" url="cplusplus14.html#l275"> + <tocsect3 name="14.6.1: The dynamic_cast operator" url="cplusplus14.html#l276"/> + <tocsect3 name="14.6.2: The `typeid' operator" url="cplusplus14.html#l277"/> + </tocsect2> + <tocsect2 name="14.7: Inheritance: when to use to achieve what?" url="cplusplus14.html#l278"/> + <tocsect2 name="14.8: The `streambuf' class" url="cplusplus14.html#l279"> + <tocsect3 name="14.8.1: Protected `streambuf' members" url="cplusplus14.html#l280"> + <tocsect4 name="14.8.1.1: Protected members for input operations" url="cplusplus14.html#l281"/> + <tocsect4 name="14.8.1.2: Protected members for output operations" url="cplusplus14.html#l282"/> + <tocsect4 name="14.8.1.3: Protected members for buffer manipulation" url="cplusplus14.html#l283"/> + <tocsect4 name="14.8.1.4: Deriving classes from `streambuf'" url="cplusplus14.html#l284"/> + </tocsect3> + <tocsect3 name="14.8.2: The class `filebuf'" url="cplusplus14.html#l285"/> </tocsect2> + <tocsect2 name="14.9: A polymorphic exception class" url="cplusplus14.html#l286"/> + <tocsect2 name="14.10: How polymorphism is implemented" url="cplusplus14.html#l287"/> + <tocsect2 name="14.11: Undefined reference to vtable ..." url="cplusplus14.html#l288"/> + <tocsect2 name="14.12: Virtual constructors" url="cplusplus14.html#l289"/> </tocsect1> -<tocsect1 name="Chapter 14: Polymorphism" url="cplusplus14.html#l183"> - <tocsect2 name="14.1: Virtual functions" url="cplusplus14.html#l184"/> - <tocsect2 name="14.2: Virtual destructors" url="cplusplus14.html#l185"/> - <tocsect2 name="14.3: Pure virtual functions" url="cplusplus14.html#l186"/> - <tocsect2 name="14.4: Virtual functions in multiple inheritance" url="cplusplus14.html#l187"> - <tocsect3 name="14.4.1: Ambiguity in multiple inheritance" url="cplusplus14.html#l188"/> - <tocsect3 name="14.4.2: Virtual base classes" url="cplusplus14.html#l189"/> - <tocsect3 name="14.4.3: When virtual derivation is not appropriate" url="cplusplus14.html#l190"/> - </tocsect2> - <tocsect2 name="14.5: Run-Time Type identification" url="cplusplus14.html#l191"> - <tocsect3 name="14.5.1: The dynamic_cast operator" url="cplusplus14.html#l192"/> - <tocsect3 name="14.5.2: The typeid operator" url="cplusplus14.html#l193"/> - </tocsect2> - <tocsect2 name="14.6: Deriving classes from `streambuf'" url="cplusplus14.html#l194"/> - <tocsect2 name="14.7: A polymorphic exception class" url="cplusplus14.html#l195"/> - <tocsect2 name="14.8: How polymorphism is implemented" url="cplusplus14.html#l196"/> +<tocsect1 name="Chapter 15: Friends" url="cplusplus15.html#l290"> + <tocsect2 name="15.1: Friend functions" url="cplusplus15.html#l291"/> + <tocsect2 name="15.2: Extended friend declarations" url="cplusplus15.html#l292"/> </tocsect1> -<tocsect1 name="Chapter 15: Classes having pointers to members" url="cplusplus15.html#l197"> - <tocsect2 name="15.1: Pointers to members: an example" url="cplusplus15.html#l198"/> - <tocsect2 name="15.2: Defining pointers to members" url="cplusplus15.html#l199"/> - <tocsect2 name="15.3: Using pointers to members" url="cplusplus15.html#l200"/> - <tocsect2 name="15.4: Pointers to static members" url="cplusplus15.html#l201"/> - <tocsect2 name="15.5: Sizes of pointers" url="cplusplus15.html#l202"/> +<tocsect1 name="Chapter 16: Classes Having Pointers To Members" url="cplusplus16.html#l293"> + <tocsect2 name="16.1: Pointers to members: an example" url="cplusplus16.html#l294"/> + <tocsect2 name="16.2: Defining pointers to members" url="cplusplus16.html#l295"/> + <tocsect2 name="16.3: Using pointers to members" url="cplusplus16.html#l296"/> + <tocsect2 name="16.4: Pointers to static members" url="cplusplus16.html#l297"/> + <tocsect2 name="16.5: Pointer sizes" url="cplusplus16.html#l298"/> </tocsect1> -<tocsect1 name="Chapter 16: Nested Classes" url="cplusplus16.html#l203"> - <tocsect2 name="16.1: Defining nested class members" url="cplusplus16.html#l204"/> - <tocsect2 name="16.2: Declaring nested classes" url="cplusplus16.html#l205"/> - <tocsect2 name="16.3: Accessing private members in nested classes" url="cplusplus16.html#l206"/> - <tocsect2 name="16.4: Nesting enumerations" url="cplusplus16.html#l207"> - <tocsect3 name="16.4.1: Empty enumerations" url="cplusplus16.html#l208"/> +<tocsect1 name="Chapter 17: Nested Classes" url="cplusplus17.html#l299"> + <tocsect2 name="17.1: Defining nested class members" url="cplusplus17.html#l300"/> + <tocsect2 name="17.2: Declaring nested classes" url="cplusplus17.html#l301"/> + <tocsect2 name="17.3: Accessing private members in nested classes" url="cplusplus17.html#l302"/> + <tocsect2 name="17.4: Nesting enumerations" url="cplusplus17.html#l303"> + <tocsect3 name="17.4.1: Empty enumerations" url="cplusplus17.html#l304"/> + </tocsect2> + <tocsect2 name="17.5: Revisiting virtual constructors" url="cplusplus17.html#l305"/> +</tocsect1> + +<tocsect1 name="Chapter 18: The Standard Template Library" url="cplusplus18.html#l306"> + <tocsect2 name="18.1: Predefined function objects" url="cplusplus18.html#l307"> + <tocsect3 name="18.1.1: Arithmetic function objects" url="cplusplus18.html#l308"/> + <tocsect3 name="18.1.2: Relational function objects" url="cplusplus18.html#l309"/> + <tocsect3 name="18.1.3: Logical function objects" url="cplusplus18.html#l310"/> + <tocsect3 name="18.1.4: Function adaptors" url="cplusplus18.html#l311"> + <tocsect4 name="18.1.4.1: Binders" url="cplusplus18.html#l312"/> + <tocsect4 name="18.1.4.2: Negators" url="cplusplus18.html#l313"/> + </tocsect3> + </tocsect2> + <tocsect2 name="18.2: Iterators" url="cplusplus18.html#l314"> + <tocsect3 name="18.2.1: Insert iterators" url="cplusplus18.html#l315"/> + <tocsect3 name="18.2.2: Iterators for `istream' objects" url="cplusplus18.html#l316"> + <tocsect4 name="18.2.2.1: Iterators for `istreambuf' objects" url="cplusplus18.html#l317"/> + </tocsect3> + <tocsect3 name="18.2.3: Iterators for `ostream' objects" url="cplusplus18.html#l318"> + <tocsect4 name="18.2.3.1: Iterators for `ostreambuf' objects" url="cplusplus18.html#l319"/> + </tocsect3> + </tocsect2> + <tocsect2 name="18.3: The class 'unique_ptr'" url="cplusplus18.html#l320"> + <tocsect3 name="18.3.1: Defining `unique_ptr' objects" url="cplusplus18.html#l321"/> + <tocsect3 name="18.3.2: Creating a plain `unique_ptr'" url="cplusplus18.html#l322"/> + <tocsect3 name="18.3.3: Moving another `unique_ptr'" url="cplusplus18.html#l323"/> + <tocsect3 name="18.3.4: Pointing to a newly allocated object" url="cplusplus18.html#l324"/> + <tocsect3 name="18.3.5: Operators and members" url="cplusplus18.html#l325"/> + <tocsect3 name="18.3.6: Using `unique_ptr' objects for arrays" url="cplusplus18.html#l326"/> + <tocsect3 name="18.3.7: The legacy class 'auto_ptr' (deprecated)" url="cplusplus18.html#l327"/> + </tocsect2> + <tocsect2 name="18.4: The class 'shared_ptr'" url="cplusplus18.html#l328"> + <tocsect3 name="18.4.1: Defining `shared_ptr' objects" url="cplusplus18.html#l329"/> + <tocsect3 name="18.4.2: Creating a plain `shared_ptr'" url="cplusplus18.html#l330"/> + <tocsect3 name="18.4.3: Pointing to a newly allocated object" url="cplusplus18.html#l331"/> + <tocsect3 name="18.4.4: Operators and members" url="cplusplus18.html#l332"/> + <tocsect3 name="18.4.5: Casting shared pointers" url="cplusplus18.html#l333"/> + <tocsect3 name="18.4.6: Using `shared_ptr' objects for arrays" url="cplusplus18.html#l334"/> + </tocsect2> + <tocsect2 name="18.5: Using `make_shared' to combine `shared_ptr' and `new'" url="cplusplus18.html#l335"/> + <tocsect2 name="18.6: Classes having pointer data members" url="cplusplus18.html#l336"/> + <tocsect2 name="18.7: Specifying time (absolute and relative)" url="cplusplus18.html#l337"> + <tocsect3 name="18.7.1: Time units: the class 'ratio'" url="cplusplus18.html#l338"/> + <tocsect3 name="18.7.2: An amount of time: the class 'duration'" url="cplusplus18.html#l339"/> + <tocsect3 name="18.7.3: Clocks measuring time" url="cplusplus18.html#l340"/> + <tocsect3 name="18.7.4: Points in time: the class 'time_point'" url="cplusplus18.html#l341"/> + </tocsect2> + <tocsect2 name="18.8: Multi Threading" url="cplusplus18.html#l342"> + <tocsect3 name="18.8.1: The namespace `std::this_thread'" url="cplusplus18.html#l343"/> + <tocsect3 name="18.8.2: The class `std::thread'" url="cplusplus18.html#l344"/> + <tocsect3 name="18.8.3: Synchronization (mutexes)" url="cplusplus18.html#l345"/> + <tocsect3 name="18.8.4: Locks and lock handling" url="cplusplus18.html#l346"> + <tocsect4 name="18.8.4.1: Deadlocks" url="cplusplus18.html#l347"/> + </tocsect3> + <tocsect3 name="18.8.5: Event handling (condition variables)" url="cplusplus18.html#l348"> + <tocsect4 name="18.8.5.1: The class 'condition_variable'" url="cplusplus18.html#l349"/> + <tocsect4 name="18.8.5.2: The class 'condition_variable_any'" url="cplusplus18.html#l350"/> + <tocsect4 name="18.8.5.3: An example using condition variables" url="cplusplus18.html#l351"/> + </tocsect3> + </tocsect2> + <tocsect2 name="18.9: Lambda expressions" url="cplusplus18.html#l352"/> + <tocsect2 name="18.10: Randomization and Statistical Distributions" url="cplusplus18.html#l353"> + <tocsect3 name="18.10.1: Random Number Generators" url="cplusplus18.html#l354"/> + <tocsect3 name="18.10.2: Statistical distributions" url="cplusplus18.html#l355"> + <tocsect4 name="18.10.2.1: Bernoulli distribution" url="cplusplus18.html#l356"/> + <tocsect4 name="18.10.2.2: Binomial distribution" url="cplusplus18.html#l357"/> + <tocsect4 name="18.10.2.3: Cauchy distribution" url="cplusplus18.html#l358"/> + <tocsect4 name="18.10.2.4: Chi-squared distribution" url="cplusplus18.html#l359"/> + <tocsect4 name="18.10.2.5: Extreme value distribution" url="cplusplus18.html#l360"/> + <tocsect4 name="18.10.2.6: Exponential distribution" url="cplusplus18.html#l361"/> + <tocsect4 name="18.10.2.7: Fisher F distribution" url="cplusplus18.html#l362"/> + <tocsect4 name="18.10.2.8: Gamma distribution" url="cplusplus18.html#l363"/> + <tocsect4 name="18.10.2.9: Geometric distribution" url="cplusplus18.html#l364"/> + <tocsect4 name="18.10.2.10: Log-normal distribution" url="cplusplus18.html#l365"/> + <tocsect4 name="18.10.2.11: Normal distribution" url="cplusplus18.html#l366"/> + <tocsect4 name="18.10.2.12: Negative binomial distribution" url="cplusplus18.html#l367"/> + <tocsect4 name="18.10.2.13: Poisson distribution" url="cplusplus18.html#l368"/> + <tocsect4 name="18.10.2.14: Student t distribution" url="cplusplus18.html#l369"/> + <tocsect4 name="18.10.2.15: Uniform int distribution" url="cplusplus18.html#l370"/> + <tocsect4 name="18.10.2.16: Uniform real distribution" url="cplusplus18.html#l371"/> + <tocsect4 name="18.10.2.17: Weibull distribution" url="cplusplus18.html#l372"/> + </tocsect3> </tocsect2> </tocsect1> -<tocsect1 name="Chapter 17: The Standard Template Library, generic algorithms" url="cplusplus17.html#l209"> - <tocsect2 name="17.1: Predefined function objects" url="cplusplus17.html#l210"> - <tocsect3 name="17.1.1: Arithmetic Function Objects" url="cplusplus17.html#l211"/> - <tocsect3 name="17.1.2: Relational Function Objects" url="cplusplus17.html#l212"/> - <tocsect3 name="17.1.3: Logical Function Objects" url="cplusplus17.html#l213"/> - <tocsect3 name="17.1.4: Function Adaptors" url="cplusplus17.html#l214"/> - </tocsect2> - <tocsect2 name="17.2: Iterators" url="cplusplus17.html#l215"> - <tocsect3 name="17.2.1: Insert iterators" url="cplusplus17.html#l216"/> - <tocsect3 name="17.2.2: istream iterators" url="cplusplus17.html#l217"> - <tocsect4 name="17.2.2.1: istreambuf iterators" url="cplusplus17.html#l218"/> - </tocsect3> - <tocsect3 name="17.2.3: ostream iterators" url="cplusplus17.html#l219"> - <tocsect4 name="17.2.3.1: ostreambuf iterators" url="cplusplus17.html#l220"/> - </tocsect3> - </tocsect2> - <tocsect2 name="17.3: The 'auto_ptr' class" url="cplusplus17.html#l221"> - <tocsect3 name="17.3.1: Defining auto_ptr variables" url="cplusplus17.html#l222"/> - <tocsect3 name="17.3.2: Pointing to a newly allocated object" url="cplusplus17.html#l223"/> - <tocsect3 name="17.3.3: Pointing to another auto_ptr" url="cplusplus17.html#l224"/> - <tocsect3 name="17.3.4: Creating a plain auto_ptr" url="cplusplus17.html#l225"/> - <tocsect3 name="17.3.5: Auto_ptr: operators and members" url="cplusplus17.html#l226"/> - </tocsect2> - <tocsect2 name="17.4: The Generic Algorithms" url="cplusplus17.html#l227"> - <tocsect3 name="17.4.1: accumulate()" url="cplusplus17.html#l228"/> - <tocsect3 name="17.4.2: adjacent_difference()" url="cplusplus17.html#l229"/> - <tocsect3 name="17.4.3: adjacent_find()" url="cplusplus17.html#l230"/> - <tocsect3 name="17.4.4: binary_search()" url="cplusplus17.html#l231"/> - <tocsect3 name="17.4.5: copy()" url="cplusplus17.html#l232"/> - <tocsect3 name="17.4.6: copy_backward()" url="cplusplus17.html#l233"/> - <tocsect3 name="17.4.7: count()" url="cplusplus17.html#l234"/> - <tocsect3 name="17.4.8: count_if()" url="cplusplus17.html#l235"/> - <tocsect3 name="17.4.9: equal()" url="cplusplus17.html#l236"/> - <tocsect3 name="17.4.10: equal_range()" url="cplusplus17.html#l237"/> - <tocsect3 name="17.4.11: fill()" url="cplusplus17.html#l238"/> - <tocsect3 name="17.4.12: fill_n()" url="cplusplus17.html#l239"/> - <tocsect3 name="17.4.13: find()" url="cplusplus17.html#l240"/> - <tocsect3 name="17.4.14: find_end()" url="cplusplus17.html#l241"/> - <tocsect3 name="17.4.15: find_first_of()" url="cplusplus17.html#l242"/> - <tocsect3 name="17.4.16: find_if()" url="cplusplus17.html#l243"/> - <tocsect3 name="17.4.17: for_each()" url="cplusplus17.html#l244"/> - <tocsect3 name="17.4.18: generate()" url="cplusplus17.html#l245"/> - <tocsect3 name="17.4.19: generate_n()" url="cplusplus17.html#l246"/> - <tocsect3 name="17.4.20: includes()" url="cplusplus17.html#l247"/> - <tocsect3 name="17.4.21: inner_product()" url="cplusplus17.html#l248"/> - <tocsect3 name="17.4.22: inplace_merge()" url="cplusplus17.html#l249"/> - <tocsect3 name="17.4.23: iter_swap()" url="cplusplus17.html#l250"/> - <tocsect3 name="17.4.24: lexicographical_compare()" url="cplusplus17.html#l251"/> - <tocsect3 name="17.4.25: lower_bound()" url="cplusplus17.html#l252"/> - <tocsect3 name="17.4.26: max()" url="cplusplus17.html#l253"/> - <tocsect3 name="17.4.27: max_element()" url="cplusplus17.html#l254"/> - <tocsect3 name="17.4.28: merge()" url="cplusplus17.html#l255"/> - <tocsect3 name="17.4.29: min()" url="cplusplus17.html#l256"/> - <tocsect3 name="17.4.30: min_element()" url="cplusplus17.html#l257"/> - <tocsect3 name="17.4.31: mismatch()" url="cplusplus17.html#l258"/> - <tocsect3 name="17.4.32: next_permutation()" url="cplusplus17.html#l259"/> - <tocsect3 name="17.4.33: nth_element()" url="cplusplus17.html#l260"/> - <tocsect3 name="17.4.34: partial_sort()" url="cplusplus17.html#l261"/> - <tocsect3 name="17.4.35: partial_sort_copy()" url="cplusplus17.html#l262"/> - <tocsect3 name="17.4.36: partial_sum()" url="cplusplus17.html#l263"/> - <tocsect3 name="17.4.37: partition()" url="cplusplus17.html#l264"/> - <tocsect3 name="17.4.38: prev_permutation()" url="cplusplus17.html#l265"/> - <tocsect3 name="17.4.39: random_shuffle()" url="cplusplus17.html#l266"/> - <tocsect3 name="17.4.40: remove()" url="cplusplus17.html#l267"/> - <tocsect3 name="17.4.41: remove_copy()" url="cplusplus17.html#l268"/> - <tocsect3 name="17.4.42: remove_if()" url="cplusplus17.html#l269"/> - <tocsect3 name="17.4.43: remove_copy_if()" url="cplusplus17.html#l270"/> - <tocsect3 name="17.4.44: replace()" url="cplusplus17.html#l271"/> - <tocsect3 name="17.4.45: replace_copy()" url="cplusplus17.html#l272"/> - <tocsect3 name="17.4.46: replace_if()" url="cplusplus17.html#l273"/> - <tocsect3 name="17.4.47: replace_copy_if()" url="cplusplus17.html#l274"/> - <tocsect3 name="17.4.48: reverse()" url="cplusplus17.html#l275"/> - <tocsect3 name="17.4.49: reverse_copy()" url="cplusplus17.html#l276"/> - <tocsect3 name="17.4.50: rotate()" url="cplusplus17.html#l277"/> - <tocsect3 name="17.4.51: rotate_copy()" url="cplusplus17.html#l278"/> - <tocsect3 name="17.4.52: search()" url="cplusplus17.html#l279"/> - <tocsect3 name="17.4.53: search_n()" url="cplusplus17.html#l280"/> - <tocsect3 name="17.4.54: set_difference()" url="cplusplus17.html#l281"/> - <tocsect3 name="17.4.55: set_intersection()" url="cplusplus17.html#l282"/> - <tocsect3 name="17.4.56: set_symmetric_difference()" url="cplusplus17.html#l283"/> - <tocsect3 name="17.4.57: set_union()" url="cplusplus17.html#l284"/> - <tocsect3 name="17.4.58: sort()" url="cplusplus17.html#l285"/> - <tocsect3 name="17.4.59: stable_partition()" url="cplusplus17.html#l286"/> - <tocsect3 name="17.4.60: stable_sort()" url="cplusplus17.html#l287"/> - <tocsect3 name="17.4.61: swap()" url="cplusplus17.html#l288"/> - <tocsect3 name="17.4.62: swap_ranges()" url="cplusplus17.html#l289"/> - <tocsect3 name="17.4.63: transform()" url="cplusplus17.html#l290"/> - <tocsect3 name="17.4.64: unique()" url="cplusplus17.html#l291"/> - <tocsect3 name="17.4.65: unique_copy()" url="cplusplus17.html#l292"/> - <tocsect3 name="17.4.66: upper_bound()" url="cplusplus17.html#l293"/> - <tocsect3 name="17.4.67: Heap algorithms" url="cplusplus17.html#l294"> - <tocsect4 name="17.4.67.1: make_heap()" url="cplusplus17.html#l295"/> - <tocsect4 name="17.4.67.2: pop_heap()" url="cplusplus17.html#l296"/> - <tocsect4 name="17.4.67.3: push_heap()" url="cplusplus17.html#l297"/> - <tocsect4 name="17.4.67.4: sort_heap()" url="cplusplus17.html#l298"/> - <tocsect4 name="17.4.67.5: An example using the heap algorithms" url="cplusplus17.html#l299"/> +<tocsect1 name="Chapter 19: The STL Generic Algorithms" url="cplusplus19.html#l373"> + <tocsect2 name="19.1: The Generic Algorithms" url="cplusplus19.html#l374"> + <tocsect3 name="19.1.1: accumulate" url="cplusplus19.html#l375"/> + <tocsect3 name="19.1.2: adjacent_difference" url="cplusplus19.html#l376"/> + <tocsect3 name="19.1.3: adjacent_find" url="cplusplus19.html#l377"/> + <tocsect3 name="19.1.4: binary_search" url="cplusplus19.html#l378"/> + <tocsect3 name="19.1.5: copy" url="cplusplus19.html#l379"/> + <tocsect3 name="19.1.6: copy_backward" url="cplusplus19.html#l380"/> + <tocsect3 name="19.1.7: count" url="cplusplus19.html#l381"/> + <tocsect3 name="19.1.8: count_if" url="cplusplus19.html#l382"/> + <tocsect3 name="19.1.9: equal" url="cplusplus19.html#l383"/> + <tocsect3 name="19.1.10: equal_range" url="cplusplus19.html#l384"/> + <tocsect3 name="19.1.11: fill" url="cplusplus19.html#l385"/> + <tocsect3 name="19.1.12: fill_n" url="cplusplus19.html#l386"/> + <tocsect3 name="19.1.13: find" url="cplusplus19.html#l387"/> + <tocsect3 name="19.1.14: find_end" url="cplusplus19.html#l388"/> + <tocsect3 name="19.1.15: find_first_of" url="cplusplus19.html#l389"/> + <tocsect3 name="19.1.16: find_if" url="cplusplus19.html#l390"/> + <tocsect3 name="19.1.17: for_each" url="cplusplus19.html#l391"/> + <tocsect3 name="19.1.18: generate" url="cplusplus19.html#l392"/> + <tocsect3 name="19.1.19: generate_n" url="cplusplus19.html#l393"/> + <tocsect3 name="19.1.20: includes" url="cplusplus19.html#l394"/> + <tocsect3 name="19.1.21: inner_product" url="cplusplus19.html#l395"/> + <tocsect3 name="19.1.22: inplace_merge" url="cplusplus19.html#l396"/> + <tocsect3 name="19.1.23: iter_swap" url="cplusplus19.html#l397"/> + <tocsect3 name="19.1.24: lexicographical_compare" url="cplusplus19.html#l398"/> + <tocsect3 name="19.1.25: lower_bound" url="cplusplus19.html#l399"/> + <tocsect3 name="19.1.26: max" url="cplusplus19.html#l400"/> + <tocsect3 name="19.1.27: max_element" url="cplusplus19.html#l401"/> + <tocsect3 name="19.1.28: merge" url="cplusplus19.html#l402"/> + <tocsect3 name="19.1.29: min" url="cplusplus19.html#l403"/> + <tocsect3 name="19.1.30: min_element" url="cplusplus19.html#l404"/> + <tocsect3 name="19.1.31: mismatch" url="cplusplus19.html#l405"/> + <tocsect3 name="19.1.32: next_permutation" url="cplusplus19.html#l406"/> + <tocsect3 name="19.1.33: nth_element" url="cplusplus19.html#l407"/> + <tocsect3 name="19.1.34: partial_sort" url="cplusplus19.html#l408"/> + <tocsect3 name="19.1.35: partial_sort_copy" url="cplusplus19.html#l409"/> + <tocsect3 name="19.1.36: partial_sum" url="cplusplus19.html#l410"/> + <tocsect3 name="19.1.37: partition" url="cplusplus19.html#l411"/> + <tocsect3 name="19.1.38: prev_permutation" url="cplusplus19.html#l412"/> + <tocsect3 name="19.1.39: random_shuffle" url="cplusplus19.html#l413"/> + <tocsect3 name="19.1.40: remove" url="cplusplus19.html#l414"/> + <tocsect3 name="19.1.41: remove_copy" url="cplusplus19.html#l415"/> + <tocsect3 name="19.1.42: remove_copy_if" url="cplusplus19.html#l416"/> + <tocsect3 name="19.1.43: remove_if" url="cplusplus19.html#l417"/> + <tocsect3 name="19.1.44: replace" url="cplusplus19.html#l418"/> + <tocsect3 name="19.1.45: replace_copy" url="cplusplus19.html#l419"/> + <tocsect3 name="19.1.46: replace_copy_if" url="cplusplus19.html#l420"/> + <tocsect3 name="19.1.47: replace_if" url="cplusplus19.html#l421"/> + <tocsect3 name="19.1.48: reverse" url="cplusplus19.html#l422"/> + <tocsect3 name="19.1.49: reverse_copy" url="cplusplus19.html#l423"/> + <tocsect3 name="19.1.50: rotate" url="cplusplus19.html#l424"/> + <tocsect3 name="19.1.51: rotate_copy" url="cplusplus19.html#l425"/> + <tocsect3 name="19.1.52: search" url="cplusplus19.html#l426"/> + <tocsect3 name="19.1.53: search_n" url="cplusplus19.html#l427"/> + <tocsect3 name="19.1.54: set_difference" url="cplusplus19.html#l428"/> + <tocsect3 name="19.1.55: set_intersection" url="cplusplus19.html#l429"/> + <tocsect3 name="19.1.56: set_symmetric_difference" url="cplusplus19.html#l430"/> + <tocsect3 name="19.1.57: set_union" url="cplusplus19.html#l431"/> + <tocsect3 name="19.1.58: sort" url="cplusplus19.html#l432"/> + <tocsect3 name="19.1.59: stable_partition" url="cplusplus19.html#l433"/> + <tocsect3 name="19.1.60: stable_sort" url="cplusplus19.html#l434"/> + <tocsect3 name="19.1.61: swap" url="cplusplus19.html#l435"/> + <tocsect3 name="19.1.62: swap_ranges" url="cplusplus19.html#l436"/> + <tocsect3 name="19.1.63: transform" url="cplusplus19.html#l437"/> + <tocsect3 name="19.1.64: unique" url="cplusplus19.html#l438"/> + <tocsect3 name="19.1.65: unique_copy" url="cplusplus19.html#l439"/> + <tocsect3 name="19.1.66: upper_bound" url="cplusplus19.html#l440"/> + <tocsect3 name="19.1.67: Heap algorithms" url="cplusplus19.html#l441"> + <tocsect4 name="19.1.67.1: The `make_heap' function" url="cplusplus19.html#l442"/> + <tocsect4 name="19.1.67.2: The `pop_heap' function" url="cplusplus19.html#l443"/> + <tocsect4 name="19.1.67.3: The `push_heap' function" url="cplusplus19.html#l444"/> + <tocsect4 name="19.1.67.4: The `sort_heap' function" url="cplusplus19.html#l445"/> + <tocsect4 name="19.1.67.5: An example using the heap functions" url="cplusplus19.html#l446"/> </tocsect3> </tocsect2> + <tocsect2 name="19.2: STL: More function adaptors" url="cplusplus19.html#l447"> + <tocsect3 name="19.2.1: Member function adaptors" url="cplusplus19.html#l448"/> + <tocsect3 name="19.2.2: Adaptable functions" url="cplusplus19.html#l449"/> + </tocsect2> </tocsect1> -<tocsect1 name="Chapter 18: Templates" url="cplusplus18.html#l300"> - <tocsect2 name="18.1: Template functions" url="cplusplus18.html#l301"> - <tocsect3 name="18.1.1: Template function definitions" url="cplusplus18.html#l302"/> - <tocsect3 name="18.1.2: Instantiations of template functions" url="cplusplus18.html#l303"> - <tocsect4 name="18.1.2.1: Declaring template functions" url="cplusplus18.html#l304"/> - </tocsect3> - <tocsect3 name="18.1.3: Argument deduction" url="cplusplus18.html#l305"> - <tocsect4 name="18.1.3.1: Lvalue transformations" url="cplusplus18.html#l306"/> - <tocsect4 name="18.1.3.2: Qualification conversions" url="cplusplus18.html#l307"/> - <tocsect4 name="18.1.3.3: Conversion to a base class" url="cplusplus18.html#l308"/> - <tocsect4 name="18.1.3.4: Summary: the template argument deduction algorithm" url="cplusplus18.html#l309"/> - </tocsect3> - <tocsect3 name="18.1.4: Explicit arguments" url="cplusplus18.html#l310"> - <tocsect4 name="18.1.4.1: Template explicit instantiation declarations" url="cplusplus18.html#l311"/> - </tocsect3> - <tocsect3 name="18.1.5: Template explicit specialization " url="cplusplus18.html#l312"/> - <tocsect3 name="18.1.6: Overloading template functions" url="cplusplus18.html#l313"/> - <tocsect3 name="18.1.7: Selecting an overloaded (template) function" url="cplusplus18.html#l314"/> - <tocsect3 name="18.1.8: Name resolution within template functions" url="cplusplus18.html#l315"/> - </tocsect2> - <tocsect2 name="18.2: Template classes" url="cplusplus18.html#l316"> - <tocsect3 name="18.2.1: Template class definitions" url="cplusplus18.html#l317"/> - <tocsect3 name="18.2.2: Template class instantiations" url="cplusplus18.html#l318"/> - <tocsect3 name="18.2.3: Non-type parameters" url="cplusplus18.html#l319"/> - <tocsect3 name="18.2.4: Template class member functions" url="cplusplus18.html#l320"/> - <tocsect3 name="18.2.5: Template classes and friend declarations" url="cplusplus18.html#l321"> - <tocsect4 name="18.2.5.1: Non-template friends" url="cplusplus18.html#l322"/> - <tocsect4 name="18.2.5.2: Bound friends" url="cplusplus18.html#l323"/> - <tocsect4 name="18.2.5.3: Unbound friends" url="cplusplus18.html#l324"/> - </tocsect3> - <tocsect3 name="18.2.6: Template classes and static data" url="cplusplus18.html#l325"/> - <tocsect3 name="18.2.7: Derived Template Classes" url="cplusplus18.html#l326"/> - <tocsect3 name="18.2.8: Nesting and template classes" url="cplusplus18.html#l327"/> - <tocsect3 name="18.2.9: Member templates" url="cplusplus18.html#l328"/> - <tocsect3 name="18.2.10: Template class specializations" url="cplusplus18.html#l329"/> - <tocsect3 name="18.2.11: Template class partial specializations" url="cplusplus18.html#l330"/> - <tocsect3 name="18.2.12: Name resolution within template classes" url="cplusplus18.html#l331"/> - </tocsect2> - <tocsect2 name="18.3: Constructing iterators" url="cplusplus18.html#l332"> - <tocsect3 name="18.3.0.1: The implementation of a Random Access Iterator " url="cplusplus18.html#l333"/> - <tocsect3 name="18.3.0.2: The implementation of a reverse_iterator" url="cplusplus18.html#l334"/> +<tocsect1 name="Chapter 20: Function Templates" url="cplusplus20.html#l450"> + <tocsect2 name="20.1: Defining function templates" url="cplusplus20.html#l451"> + <tocsect3 name="20.1.1: Considerations regarding template parameters" url="cplusplus20.html#l452"/> + <tocsect3 name="20.1.2: Late-specified return type" url="cplusplus20.html#l453"/> + </tocsect2> + <tocsect2 name="20.2: Passing arguments by reference (reference wrappers)" url="cplusplus20.html#l454"/> + <tocsect2 name="20.3: Using Local and unnamed types as template arguments" url="cplusplus20.html#l455"/> + <tocsect2 name="20.4: Template parameter deduction" url="cplusplus20.html#l456"> + <tocsect3 name="20.4.1: Lvalue transformations" url="cplusplus20.html#l457"/> + <tocsect3 name="20.4.2: Qualification transformations" url="cplusplus20.html#l458"/> + <tocsect3 name="20.4.3: Transformation to a base class" url="cplusplus20.html#l459"/> + <tocsect3 name="20.4.4: The template parameter deduction algorithm" url="cplusplus20.html#l460"/> + <tocsect3 name="20.4.5: Template type contractions" url="cplusplus20.html#l461"/> + </tocsect2> + <tocsect2 name="20.5: Declaring function templates" url="cplusplus20.html#l462"> + <tocsect3 name="20.5.1: Instantiation declarations" url="cplusplus20.html#l463"/> + </tocsect2> + <tocsect2 name="20.6: Instantiating function templates" url="cplusplus20.html#l464"> + <tocsect3 name="20.6.1: Instantiations: no `code bloat'" url="cplusplus20.html#l465"/> + </tocsect2> + <tocsect2 name="20.7: Using explicit template types" url="cplusplus20.html#l466"/> + <tocsect2 name="20.8: Overloading function templates" url="cplusplus20.html#l467"> + <tocsect3 name="20.8.1: An example using overloaded function templates" url="cplusplus20.html#l468"/> + <tocsect3 name="20.8.2: Ambiguities when overloading function templates" url="cplusplus20.html#l469"/> + <tocsect3 name="20.8.3: Declaring overloaded function templates" url="cplusplus20.html#l470"/> + </tocsect2> + <tocsect2 name="20.9: Specializing templates for deviating types" url="cplusplus20.html#l471"> + <tocsect3 name="20.9.1: Avoiding too many specializations" url="cplusplus20.html#l472"/> + <tocsect3 name="20.9.2: Declaring specializations" url="cplusplus20.html#l473"/> + <tocsect3 name="20.9.3: Complications when using the insertion operator" url="cplusplus20.html#l474"/> + </tocsect2> + <tocsect2 name="20.10: Static assertions" url="cplusplus20.html#l475"/> + <tocsect2 name="20.11: Numeric limits" url="cplusplus20.html#l476"/> + <tocsect2 name="20.12: Polymorphous wrappers for function objects" url="cplusplus20.html#l477"/> + <tocsect2 name="20.13: Compiling template definitions and instantiations" url="cplusplus20.html#l478"/> + <tocsect2 name="20.14: The function selection mechanism" url="cplusplus20.html#l479"/> + <tocsect2 name="20.15: Determining the template type parameters" url="cplusplus20.html#l480"/> + <tocsect2 name="20.16: SFINAE: Substitution Failure Is Not An Error" url="cplusplus20.html#l481"/> + <tocsect2 name="20.17: Summary of the template declaration syntax" url="cplusplus20.html#l482"/> +</tocsect1> + +<tocsect1 name="Chapter 21: Class Templates" url="cplusplus21.html#l483"> + <tocsect2 name="21.1: Defining class templates" url="cplusplus21.html#l484"> + <tocsect3 name="21.1.1: Constructing the circular queue: CirQue" url="cplusplus21.html#l485"/> + <tocsect3 name="21.1.2: Non-type parameters" url="cplusplus21.html#l486"/> + <tocsect3 name="21.1.3: Member templates" url="cplusplus21.html#l487"/> + <tocsect3 name="21.1.4: CirQue's constructors and member functions" url="cplusplus21.html#l488"/> + <tocsect3 name="21.1.5: Using CirQue objects" url="cplusplus21.html#l489"/> + <tocsect3 name="21.1.6: Default class template parameters" url="cplusplus21.html#l490"/> + <tocsect3 name="21.1.7: Declaring class templates" url="cplusplus21.html#l491"/> + <tocsect3 name="21.1.8: Preventing template instantiations" url="cplusplus21.html#l492"/> + </tocsect2> + <tocsect2 name="21.2: Static data members" url="cplusplus21.html#l493"> + <tocsect3 name="21.2.1: Extended use of the keyword `typename'" url="cplusplus21.html#l494"/> + </tocsect2> + <tocsect2 name="21.3: Specializing class templates for deviating types" url="cplusplus21.html#l495"> + <tocsect3 name="21.3.1: Example of a class specialization" url="cplusplus21.html#l496"/> + </tocsect2> + <tocsect2 name="21.4: Partial specializations" url="cplusplus21.html#l497"> + <tocsect3 name="21.4.1: Intermezzo: some simple matrix algebraic concepts" url="cplusplus21.html#l498"/> + <tocsect3 name="21.4.2: The Matrix class template" url="cplusplus21.html#l499"/> + <tocsect3 name="21.4.3: The MatrixRow partial specialization" url="cplusplus21.html#l500"/> + <tocsect3 name="21.4.4: The MatrixColumn partial specialization" url="cplusplus21.html#l501"/> + <tocsect3 name="21.4.5: The 1x1 matrix: avoid ambiguity" url="cplusplus21.html#l502"/> + </tocsect2> + <tocsect2 name="21.5: Variadic templates" url="cplusplus21.html#l503"> + <tocsect3 name="21.5.1: Defining and using variadic templates" url="cplusplus21.html#l504"/> + <tocsect3 name="21.5.2: Perfect forwarding" url="cplusplus21.html#l505"> + <tocsect4 name="21.5.2.1: References to references" url="cplusplus21.html#l506"/> + </tocsect3> + <tocsect3 name="21.5.3: The unpack operator" url="cplusplus21.html#l507"/> + <tocsect3 name="21.5.4: Non-type variadic templates" url="cplusplus21.html#l508"/> + </tocsect2> + <tocsect2 name="21.6: Tuples" url="cplusplus21.html#l509"/> + <tocsect2 name="21.7: Computing the return type of function objects" url="cplusplus21.html#l510"/> + <tocsect2 name="21.8: Instantiating class templates" url="cplusplus21.html#l511"/> + <tocsect2 name="21.9: Processing class templates and instantiations" url="cplusplus21.html#l512"/> + <tocsect2 name="21.10: Declaring friends" url="cplusplus21.html#l513"> + <tocsect3 name="21.10.1: Non-templates used as friends in templates" url="cplusplus21.html#l514"/> + <tocsect3 name="21.10.2: Templates instantiated for specific types as friends" url="cplusplus21.html#l515"/> + <tocsect3 name="21.10.3: Unbound templates as friends" url="cplusplus21.html#l516"/> + <tocsect3 name="21.10.4: Extended friend declarations" url="cplusplus21.html#l517"/> + </tocsect2> + <tocsect2 name="21.11: Class template derivation" url="cplusplus21.html#l518"> + <tocsect3 name="21.11.1: Deriving ordinary classes from class templates" url="cplusplus21.html#l519"/> + <tocsect3 name="21.11.2: Deriving class templates from class templates" url="cplusplus21.html#l520"/> + <tocsect3 name="21.11.3: Deriving class templates from ordinary classes" url="cplusplus21.html#l521"/> + </tocsect2> + <tocsect2 name="21.12: Static Polymorphism" url="cplusplus21.html#l522"> + <tocsect3 name="21.12.1: An example of static polymorphism" url="cplusplus21.html#l523"/> + <tocsect3 name="21.12.2: Converting dynamic polymorphic classes to static polymorphic classes" url="cplusplus21.html#l524"/> + <tocsect3 name="21.12.3: Using static polymorphism to avoid reimplementations" url="cplusplus21.html#l525"/> + </tocsect2> + <tocsect2 name="21.13: Class templates and nesting" url="cplusplus21.html#l526"/> + <tocsect2 name="21.14: Constructing iterators" url="cplusplus21.html#l527"> + <tocsect3 name="21.14.1: Implementing a `RandomAccessIterator'" url="cplusplus21.html#l528"/> + <tocsect3 name="21.14.2: Implementing a `reverse_iterator'" url="cplusplus21.html#l529"/> + </tocsect2> +</tocsect1> + +<tocsect1 name="Chapter 22: Advanced Template Use" url="cplusplus22.html#l530"> + <tocsect2 name="22.1: Subtleties" url="cplusplus22.html#l531"> + <tocsect3 name="22.1.1: Returning types nested under class templates" url="cplusplus22.html#l532"/> + <tocsect3 name="22.1.2: Type resolution for base class members" url="cplusplus22.html#l533"/> + <tocsect3 name="22.1.3: ::template, .template and ->template" url="cplusplus22.html#l534"/> + </tocsect2> + <tocsect2 name="22.2: Template Meta Programming" url="cplusplus22.html#l535"> + <tocsect3 name="22.2.1: Values according to templates" url="cplusplus22.html#l536"> + <tocsect4 name="22.2.1.1: Converting integral types to types" url="cplusplus22.html#l537"/> + </tocsect3> + <tocsect3 name="22.2.2: Selecting alternatives using templates" url="cplusplus22.html#l538"> + <tocsect4 name="22.2.2.1: Defining overloading members" url="cplusplus22.html#l539"/> + <tocsect4 name="22.2.2.2: Class structure as a function of template parameters" url="cplusplus22.html#l540"/> + <tocsect4 name="22.2.2.3: An illustrative example" url="cplusplus22.html#l541"/> + </tocsect3> + <tocsect3 name="22.2.3: Templates: Iterations by Recursion" url="cplusplus22.html#l542"/> + </tocsect2> + <tocsect2 name="22.3: User-defined literals" url="cplusplus22.html#l543"/> + <tocsect2 name="22.4: Template template parameters" url="cplusplus22.html#l544"> + <tocsect3 name="22.4.1: Policy classes - I" url="cplusplus22.html#l545"/> + <tocsect3 name="22.4.2: Policy classes - II: template template parameters" url="cplusplus22.html#l546"> + <tocsect4 name="22.4.2.1: The destructor of Policy classes" url="cplusplus22.html#l547"/> + </tocsect3> + <tocsect3 name="22.4.3: Structure by Policy" url="cplusplus22.html#l548"/> + </tocsect2> + <tocsect2 name="22.5: Template aliases" url="cplusplus22.html#l549"/> + <tocsect2 name="22.6: Trait classes" url="cplusplus22.html#l550"> + <tocsect3 name="22.6.1: Distinguishing class from non-class types" url="cplusplus22.html#l551"/> + <tocsect3 name="22.6.2: Available type traits" url="cplusplus22.html#l552"/> + </tocsect2> + <tocsect2 name="22.7: Using `noexcept' when offering the `strong guarantee'" url="cplusplus22.html#l553"/> + <tocsect2 name="22.8: More conversions to class types" url="cplusplus22.html#l554"> + <tocsect3 name="22.8.1: Types to types" url="cplusplus22.html#l555"/> + <tocsect3 name="22.8.2: An empty type" url="cplusplus22.html#l556"/> + <tocsect3 name="22.8.3: Type convertibility" url="cplusplus22.html#l557"> + <tocsect4 name="22.8.3.1: Determining inheritance" url="cplusplus22.html#l558"/> + </tocsect3> + </tocsect2> + <tocsect2 name="22.9: Template TypeList processing" url="cplusplus22.html#l559"> + <tocsect3 name="22.9.1: The length of a TypeList" url="cplusplus22.html#l560"/> + <tocsect3 name="22.9.2: Searching a TypeList" url="cplusplus22.html#l561"/> + <tocsect3 name="22.9.3: Selecting from a TypeList" url="cplusplus22.html#l562"/> + <tocsect3 name="22.9.4: Prefixing/Appending to a TypeList" url="cplusplus22.html#l563"/> + <tocsect3 name="22.9.5: Erasing from a TypeList" url="cplusplus22.html#l564"> + <tocsect4 name="22.9.5.1: Erasing the first occurrence" url="cplusplus22.html#l565"/> + <tocsect4 name="22.9.5.2: Erasing a type by its index" url="cplusplus22.html#l566"/> + <tocsect4 name="22.9.5.3: Erasing all occurrences of a type" url="cplusplus22.html#l567"/> + <tocsect4 name="22.9.5.4: Erasing duplicates" url="cplusplus22.html#l568"/> + </tocsect3> + </tocsect2> + <tocsect2 name="22.10: Using a TypeList" url="cplusplus22.html#l569"> + <tocsect3 name="22.10.1: The Wrap and Multi class templates" url="cplusplus22.html#l570"/> + <tocsect3 name="22.10.2: The MultiBase class template" url="cplusplus22.html#l571"/> + <tocsect3 name="22.10.3: Support templates" url="cplusplus22.html#l572"/> + <tocsect3 name="22.10.4: Using Multi" url="cplusplus22.html#l573"/> </tocsect2> </tocsect1> -<tocsect1 name="Chapter 19: Concrete examples of C++" url="cplusplus19.html#l335"> - <tocsect2 name="19.1: Function objects performing bitwise operations" url="cplusplus19.html#l336"/> - <tocsect2 name="19.2: Implementing a reverse_iterator" url="cplusplus19.html#l337"/> - <tocsect2 name="19.3: A text to anything converter" url="cplusplus19.html#l338"/> - <tocsect2 name="19.4: `streambuf' classes using file descriptors" url="cplusplus19.html#l339"> - <tocsect3 name="19.4.1: A class for output operations" url="cplusplus19.html#l340"/> - <tocsect3 name="19.4.2: Classes for input operations" url="cplusplus19.html#l341"> - <tocsect4 name="19.4.2.1: Using a one-character buffer" url="cplusplus19.html#l342"/> - <tocsect4 name="19.4.2.2: Using an n-character buffer" url="cplusplus19.html#l343"/> - <tocsect4 name="19.4.2.3: Seeking positions in `streambuf' objects" url="cplusplus19.html#l344"/> - <tocsect4 name="19.4.2.4: Multiple `unget()' calls in `streambuf' objects" url="cplusplus19.html#l345"/> - </tocsect3> - </tocsect2> - <tocsect2 name="19.5: Using form() with ostream objects" url="cplusplus19.html#l346"/> - <tocsect2 name="19.6: Redirection revisited" url="cplusplus19.html#l347"/> - <tocsect2 name="19.7: The fork() system call" url="cplusplus19.html#l348"> - <tocsect3 name="19.7.1: The `Daemon' program" url="cplusplus19.html#l349"/> - <tocsect3 name="19.7.2: The `Pipe' class" url="cplusplus19.html#l350"/> - <tocsect3 name="19.7.3: The `ParentSlurp' class" url="cplusplus19.html#l351"/> - <tocsect3 name="19.7.4: Communicating with multiple children" url="cplusplus19.html#l352"> - <tocsect4 name="19.7.4.1: The `Select' class" url="cplusplus19.html#l353"/> - <tocsect4 name="19.7.4.2: The `Child' class" url="cplusplus19.html#l354"/> - <tocsect4 name="19.7.4.3: The `Monitor' class" url="cplusplus19.html#l355"/> - </tocsect3> - </tocsect2> - <tocsect2 name="19.8: Using Bison and Flex" url="cplusplus19.html#l356"> - <tocsect3 name="19.8.1: Using Flex++ to create a scanner" url="cplusplus19.html#l357"> - <tocsect4 name="19.8.1.1: The flex++ specification file" url="cplusplus19.html#l358"/> - <tocsect4 name="19.8.1.2: The derived class: Scanner" url="cplusplus19.html#l359"/> - <tocsect4 name="19.8.1.3: The main() function" url="cplusplus19.html#l360"/> - <tocsect4 name="19.8.1.4: Building the scanner-program" url="cplusplus19.html#l361"/> - </tocsect3> - <tocsect3 name="19.8.2: Using both bison++ and flex++" url="cplusplus19.html#l362"> - <tocsect4 name="19.8.2.1: The bison++ specification file" url="cplusplus19.html#l363"/> - <tocsect4 name="19.8.2.2: The bison++ header section" url="cplusplus19.html#l364"/> - <tocsect4 name="19.8.2.3: The bison++ definition section" url="cplusplus19.html#l365"/> - <tocsect4 name="19.8.2.4: The bison++ grammar rules" url="cplusplus19.html#l366"/> - <tocsect4 name="19.8.2.5: The flex++ specification file" url="cplusplus19.html#l367"/> - <tocsect4 name="19.8.2.6: The generation of the code" url="cplusplus19.html#l368"/> +<tocsect1 name="Chapter 23: Concrete Examples" url="cplusplus23.html#l574"> + <tocsect2 name="23.1: Using file descriptors with `streambuf' classes" url="cplusplus23.html#l575"> + <tocsect3 name="23.1.1: Classes for output operations" url="cplusplus23.html#l576"/> + <tocsect3 name="23.1.2: Classes for input operations" url="cplusplus23.html#l577"> + <tocsect4 name="23.1.2.1: Using a one-character buffer" url="cplusplus23.html#l578"/> + <tocsect4 name="23.1.2.2: Using an n-character buffer" url="cplusplus23.html#l579"/> + <tocsect4 name="23.1.2.3: Seeking positions in `streambuf' objects" url="cplusplus23.html#l580"/> + <tocsect4 name="23.1.2.4: Multiple `unget' calls in `streambuf' objects" url="cplusplus23.html#l581"/> + </tocsect3> + <tocsect3 name="23.1.3: Fixed-sized field extraction from istream objects" url="cplusplus23.html#l582"> + <tocsect4 name="23.1.3.1: Member functions and example" url="cplusplus23.html#l583"/> + </tocsect3> + </tocsect2> + <tocsect2 name="23.2: The `fork' system call" url="cplusplus23.html#l584"> + <tocsect3 name="23.2.1: A basic Fork class" url="cplusplus23.html#l585"/> + <tocsect3 name="23.2.2: Parents and Children" url="cplusplus23.html#l586"/> + <tocsect3 name="23.2.3: Redirection revisited" url="cplusplus23.html#l587"/> + <tocsect3 name="23.2.4: The `Daemon' program" url="cplusplus23.html#l588"/> + <tocsect3 name="23.2.5: The class `Pipe'" url="cplusplus23.html#l589"/> + <tocsect3 name="23.2.6: The class `ParentSlurp'" url="cplusplus23.html#l590"/> + <tocsect3 name="23.2.7: Communicating with multiple children" url="cplusplus23.html#l591"> + <tocsect4 name="23.2.7.1: The class `Selector': interface" url="cplusplus23.html#l592"/> + <tocsect4 name="23.2.7.2: The class `Selector': implementation" url="cplusplus23.html#l593"/> + <tocsect4 name="23.2.7.3: The class `Monitor': interface" url="cplusplus23.html#l594"/> + <tocsect4 name="23.2.7.4: The class `Monitor': s_handler" url="cplusplus23.html#l595"/> + <tocsect4 name="23.2.7.5: The class `Monitor': the member `run'" url="cplusplus23.html#l596"/> + <tocsect4 name="23.2.7.6: The class `Monitor': example" url="cplusplus23.html#l597"/> + <tocsect4 name="23.2.7.7: The class `Child'" url="cplusplus23.html#l598"/> + </tocsect3> + </tocsect2> + <tocsect2 name="23.3: Function objects performing bitwise operations" url="cplusplus23.html#l599"/> + <tocsect2 name="23.4: Adding binary operators to classes" url="cplusplus23.html#l600"> + <tocsect3 name="23.4.1: Binary operators allowing promotions" url="cplusplus23.html#l601"> + </tocsect3> + </tocsect2> + <tocsect2 name="23.5: Range-based for-loops and pointer-ranges" url="cplusplus23.html#l602"/> + <tocsect2 name="23.6: Distinguishing lvalues from rvalues with operator[]()" url="cplusplus23.html#l603"/> + <tocsect2 name="23.7: Implementing a `reverse_iterator'" url="cplusplus23.html#l604"/> + <tocsect2 name="23.8: Using `bisonc++' and `flexc++'" url="cplusplus23.html#l605"> + <tocsect3 name="23.8.1: Using `flexc++' to create a scanner" url="cplusplus23.html#l606"> + <tocsect4 name="23.8.1.1: The derived class `Scanner'" url="cplusplus23.html#l607"/> + <tocsect4 name="23.8.1.2: The lexical scanner specification file" url="cplusplus23.html#l608"/> + <tocsect4 name="23.8.1.3: Implementing `Scanner'" url="cplusplus23.html#l609"/> + <tocsect4 name="23.8.1.4: Using a `Scanner' object" url="cplusplus23.html#l610"/> + <tocsect4 name="23.8.1.5: Building the program" url="cplusplus23.html#l611"/> + </tocsect3> + <tocsect3 name="23.8.2: Using `bisonc++' and `flexc++'" url="cplusplus23.html#l612"> + <tocsect4 name="23.8.2.1: The `bisonc++' specification file" url="cplusplus23.html#l613"/> + <tocsect4 name="23.8.2.2: The `flexc++' specification file" url="cplusplus23.html#l614"/> + <tocsect4 name="23.8.2.3: Building the program" url="cplusplus23.html#l615"/> + </tocsect3> + <tocsect3 name="23.8.3: Bisonc++: using polymorphic semantic values" url="cplusplus23.html#l616"> + <tocsect4 name="23.8.3.1: The parser using a polymorphic semantic value type" url="cplusplus23.html#l617"/> + <tocsect4 name="23.8.3.2: Tagging the actual semantic type: the `enum class Tag'" url="cplusplus23.html#l618"/> + <tocsect4 name="23.8.3.3: (Im)mutable semantic data: two base-structs" url="cplusplus23.html#l619"/> + <tocsect4 name="23.8.3.4: Traits of semantic type tags: the `TagTrait' trait class" url="cplusplus23.html#l620"/> + <tocsect4 name="23.8.3.5: Accessing data from derived classes" url="cplusplus23.html#l621"/> + <tocsect4 name="23.8.3.6: The polymorphic base class `SemBase'" url="cplusplus23.html#l622"/> + <tocsect4 name="23.8.3.7: The class template `Semantic', derived from `SemBase'" url="cplusplus23.html#l623"/> + <tocsect4 name="23.8.3.8: Adding new semantic data types" url="cplusplus23.html#l624"/> + <tocsect4 name="23.8.3.9: The parser's semantic value: `spSemBase'" url="cplusplus23.html#l625"/> + <tocsect4 name="23.8.3.10: The parser specification file" url="cplusplus23.html#l626"/> + <tocsect4 name="23.8.3.11: The scanner using a polymorphic semantic value type" url="cplusplus23.html#l627"/> </tocsect3> </tocsect2> </tocsect1> |