summaryrefslogtreecommitdiffstats
path: root/languages/cpp/doc/cppannotations.toc
blob: 15cb336790a08ca7e63463c0caf44fe7b2e8d60f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
<!DOCTYPE tdeveloptoc> 
<tdeveloptoc> 
<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 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: 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.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#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: 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 `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: 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.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.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.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>
</tocsect1>

<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.4: Data member initializers" url="cplusplus07.html#l115">
    <tocsect3 name="7.4.1: Delegating constructors" url="cplusplus07.html#l116"/>
  </tocsect2>
  <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.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.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.12: Sizeof applied to class data members" url="cplusplus07.html#l130"/>
</tocsect1>

<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.2: Static member functions" url="cplusplus08.html#l138">
    <tocsect3 name="8.2.1: Calling conventions" url="cplusplus08.html#l139"/>
  </tocsect2>
</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="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 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 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="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 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 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 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 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 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 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"/>
  </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 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 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 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>

<tocsect1 name="Index" url="cppindex.html" />

</tdeveloptoc>