C++ Language

Preface
This wiki book describes the C++ programming language.

Thank you for reading this wiki book!

Table of Contents

 * 1) Overview
 * 2) Preprocessing
 * 3) Macros
 * 4) Tokenization
 * 5) Preprocessing Strings
 * 6) Compile-time Constants
 * 7) Compile-time Assertions
 * 8) Conditional-Compilation
 * 9) Namespace
 * 10) Namespace Shortcuts
 * 11) Nesting
 * 12) Splitting across Files
 * 13) Named and Unnamed
 * 14) Type
 * 15) Hungarian Prefixes
 * 16) Boolean
 * 17) Literals
 * 18) Financial 1000-Markers
 * 19) Binary and Hexadecimal
 * 20) Custom Literals
 * 21) Bitwise Representation
 * 22) Ordering of Bytes
 * 23) Negative Value
 * 24) Bit Shifting
 * 25) Non-char Byte
 * 26) Bit Flags
 * 27) Max Value
 * 28) Overflow
 * 29) INT_MAX
 * 30) Conversion
 * 31) Promoting Small Integers
 * 32) Coercion
 * 33) Casting
 * 34) Enumeration
 * 35) Shortcuts
 * 36) Templated typedef
 * 37) From Another Variable
 * 38) From Initialization
 * 39) From a return Statement
 * 40) Trailing Return Type
 * 41) Variant
 * 42) Any-Variant
 * 43) Templated-Variant
 * 44) Optional-Value
 * 45) RTTI: RunTime Type Information
 * 46) Variables
 * 47) Lifetime and Scope
 * 48) Initialization
 * 49) Uniform Initialization
 * 50) Initialize without Constructor
 * 51) Decomposing-Auto
 * 52) Define at Same Time as Type
 * 53) Indirection
 * 54) Pointers
 * 55) Typed NULL
 * 56) Arrays
 * 57) Reference Variables
 * 58) Rvalue-References
 * 59) Move-Semantics
 * 60) Moving from this
 * 61) Perfect Forwarding
 * 62) Smart Pointers
 * 63) Risk from Raw Pointers
 * 64) Unique Ownership
 * 65) Shared Ownership
 * 66) Ownership Cycle
 * 67) Owning an Array
 * 68) Pointer to Base-Class
 * 69) Returning this
 * 70) Smart Compiler-Temporary
 * 71) Custom Destruction
 * 72) Template-Parameter
 * 73) Expressions
 * 74) Precedence
 * 75) Chain of Assignment
 * 76) Program Flow
 * 77) Loops
 * 78) Basic Loops
 * 79) Looping over a Collection
 * 80) The break Statement
 * 81) A Break in a Nested Loop
 * 82) Fallthrough in a Switch
 * 83) Return Value
 * 84) Parameters
 * 85) Default Parameter
 * 86) Unused Parameter
 * 87) Variable Number of Parameters
 * 88) Function Overloading
 * 89) Discrimination Criteria
 * 90) Across Inheritance
 * 91) Function-Pointer
 * 92) Deprecating a Function
 * 93) Objects
 * 94) Accessibility
 * 95) Unwanted Compiler-Generated Functions
 * 96) Constructors
 * 97) Ordering
 * 98) Initialization by Copy-Constructor
 * 99) Initialization by One-Parameter-Constructor
 * 100) Keeping Default Constructor
 * 101) Delegation within Class
 * 102) Memory Full
 * 103) Placement New
 * 104) Destructors
 * 105) Const Members
 * 106) Const Data Members
 * 107) Const Member Functions
 * 108) Static Members
 * 109) Static Data Members
 * 110) Static Member Functions
 * 111) Inheritance
 * 112) Polymorphism Syntax
 * 113) Qualification Syntax
 * 114) Restricted Overriding
 * 115) Multiple Inheritance
 * 116) Operator Overloading
 * 117) Nested Classes
 * 118) Pointer to Members
 * 119) Low-Level C Structures
 * 120) Union
 * 121) Flexible-Array-Member
 * 122) Bitfield
 * 123) Templates
 * 124) Templated-Functions
 * 125) Templated-Classes
 * 126) Templated-Variables
 * 127) Template-Parameters
 * 128) Default Template-Parameters
 * 129) Deducing Template-Parameters
 * 130) Variable Number of Template-Parameters
 * 131) Traits
 * 132) Unary Predicate Traits
 * 133) Binary Predicate Traits
 * 134) Array Traits
 * 135) Unary Transform Traits
 * 136) Binary Transform Traits
 * 137) S.F.I.N.A.E. Conditional-Compilation
 * 138) Metaprogramming
 * 139) Numeric Template-Parameters
 * 140) Collection of Types
 * 141) Concepts
 * 142) Error Handling
 * 143) Returning an Error Code
 * 144) Assertions
 * 145) C++ Exception Handling
 * 146) Standard Libraries
 * 147) C-Runtime
 * 148) Math
 * 149) Basic Math
 * 150) Trigonometry
 * 151) Rational Numbers
 * 152) Complex Numbers
 * 153) Miscellaneous Math
 * 154) Heap Memory
 * 155) Allocation
 * 156) Memory Manipulation
 * 157) Leaks
 * 158) Time
 * 159) Time as a String
 * 160) Precise Time
 * 161) Timespan as CPU Clockticks
 * 162) Basic Algorithms
 * 163) Search
 * 164) Quick Sort
 * 165) Executing a Shell Command
 * 166) STL: Standard Template Library
 * 167) Collection Classes
 * 168) Sequence Collections
 * 169) Vector
 * 170) Construction
 * 171) Size
 * 172) Equality
 * 173) Indexing
 * 174) Removing Items
 * 175) Inserting Items
 * 176) Assignment
 * 177) Vector of Bool
 * 178) STL-Array
 * 179) Deque
 * 180) List
 * 181) Forward-List
 * 182) Sorted Collections
 * 183) A Pair as one Item
 * 184) Tuple
 * 185) Map
 * 186) Construction
 * 187) Sort-Class
 * 188) Custom Sort-Class
 * 189) Size
 * 190) Equality
 * 191) Indexing
 * 192) Removing Items
 * 193) Inserting Items
 * 194) Assignment
 * 195) Multimap
 * 196) Set
 * 197) Multiset
 * 198) Hash-Table
 * 199) Iterators
 * 200) Basic Iterators
 * 201) Ranges
 * 202) Insert-Iterators
 * 203) Reverse-Iterators
 * 204) Stream-Iterators
 * 205) Custom Iterators
 * 206) Adapters
 * 207) Stack
 * 208) Queue
 * 209) Binary-Heap
 * 210) Callable-Objects
 * 211) A Function Name as a Value
 * 212) Member Function
 * 213) Implicit Getter-Function
 * 214) Functor
 * 215) Lambda
 * 216) Generic Lambda
 * 217) Binding a new Function
 * 218) Algorithms
 * 219) Usage with a C-Array
 * 220) Querying
 * 221) Counting
 * 222) Searching
 * 223) Accumulating
 * 224) Applying Item-by-Item
 * 225) Processing Item-by-Item
 * 226) Ignoring Prior Values
 * 227) Item-by-Item Combination of Two Collections
 * 228) Modifying
 * 229) Copying
 * 230) Removing
 * 231) Reordering
 * 232) Strings
 * 233) Unicode
 * 234) Avoiding Buffer-Overrun
 * 235) Character Categories
 * 236) C-String Manipulation
 * 237) String Class
 * 238) Construction
 * 239) Equality
 * 240) Indexing
 * 241) Inserting Characters
 * 242) Algorithms
 * 243) Casting Numeric Values
 * 244) Number to String
 * 245) String to Number
 * 246) AliasedStrings
 * 247) Regular Expressions
 * 248) Locale
 * 249) IOStreams
 * 250) Stringstream
 * 251) Streaming Custom Types
 * 252) Filesystem Access
 * 253) Moving and Deleting
 * 254) Directories
 * 255) Binary-Files
 * 256) Formatted I/O
 * 257) Newline-Converted-Files
 * 258) Size of a File
 * 259) Redirecting stdout
 * 260) Pipes
 * 261) Console I/O
 * 262) Streamed I/O
 * 263) Multithreading
 * 264) Thread Creation
 * 265) Critical Section
 * 266) Atomic Values
 * 267) Locks
 * 268) Events
 * 269) Return Value
 * 270) Semaphores
 * 271) Resource Management
 * 272) Fragment Ordering
 * 273) Ring Buffer
 * 274) Readers and Writers
 * 275) Monitors and Channels
 * 276) RNG: Random Number Generator
 * 277) Obsolete Features
 * 278) Trigraph Characters
 * 279) An Obsolete Smart Pointer
 * 280) Variadics before ANSI
 * 281) Obsolete Function Binding
 * 282) Boost Feature Graduation

Guidelines for Editors