<<

Index

11Ð6 <<= operator 5Ð15 , ± see comma operator <= ± see less than or equal to operator ! ± see logical negation operator = ± see assignment operator != ± see inequality operator == ± see equality operator # operator 16Ð5 > ± see greater than operator ## operator 16Ð6 >= ± see greater than or equal operator % ± see modulus operator >> ± see right shift operator %= operator 5Ð15 >>= operator 5Ð15 & ?: ± see conditional expression operator ± see address-of operator [] ± see bitwise AND operator ± see subscripting operator reference declarator 8Ð4 array declarator 8Ð6 && ± see logical AND operator \ ± see backslash &= operator 5Ð15 ^ ± see bitwise exclusive OR operator () ^= operator 5Ð15 ± see function call operator _ function declarator 8Ð7 underscore character 2Ð4 * underscore in identifier 2Ð4 ± see indirection operator {} ± see multiplication operator block statement 6Ð2 pointer declarator 8Ð4 class declaration 9Ð1 *= operator 5Ð15 class definition 9Ð1 + enum declaration 7Ð6 ± see addition operator initializer list 8Ð11 ± see unary plus operator | ± see bitwise inclusive OR operator ++ ± see increment operator |= operator 5Ð15 += operator 5Ð7, 5Ð15 || ± see logical OR operator - ~ ± see subtraction operator ± see destructor ± see unary minus operator ± see one’s complement operator -- ± see decrement operator 0 -= operator 5Ð15 ± see also zero, null -> ± see class member access operator null character 2Ð8 ->* ± see pointer to member operator string terminator 2Ð8 . ± see class member access operator .* ± see pointer to member operator ... ± see ellipsis A / ± see division operator abort() 3Ð4, 15Ð5 /* */ comment 2Ð4 // Ð abstract comment 2 4 Ð /= Ð class 10 8 operator 5 15 Ð : class, constructor and 10 9 class, pointer to 10Ð9 field declaration 9Ð10 abstract-declarator 8Ð2 label specifier 6Ð1 access :: ± see resolution operator adjusting base class member 11Ð3 ::*, pointer to member declarator 8Ð5 ambiguity, member 10Ð4 < ± see less than operator and friend, class 11Ð6 << ± see left shift operator and friend function 11Ð5 2 Index DRAFT September 28, 1993

base class 11Ð2 cast of pointer to member 19Ð13 base class member 10Ð1 free store and constructor 19Ð13 class member 5Ð4 free store and destructor 19Ð13 control 11Ð1 memory management 19Ð13 control, anonymous union 9Ð9 nonnested class 19Ð14 control default 11Ð1 old style base class initializer 19Ð13 control, member function and 12Ð1 old style function definition 19Ð12 control, overloading resolution and 10Ð4 overload keyword 19Ð12 declaration 11Ð3 pointer to member conversion 19Ð13 declaration, overloaded name and 11Ð5 scope of nested class 19Ð14 default assignment operator 12Ð12 this and constructor 19Ð13 default copy constructor 12Ð12 this and destructor 19Ð13 example, member name 11Ð3 AND member name 11Ð1 operator, bitwise 5Ð13 overloading and 13Ð3 operator, logical 5Ð14 protected member 11Ð7 operator, side effects and logical 5Ð14 specifier 11Ð1, 11Ð2 anonymous specifier and friend 11Ð6 union 9Ð9 specifier and object layout 11Ð2 union access control 9Ð9 struct default member 9Ð1 union, extension to 19Ð2 union default member 9Ð1 union, global 9Ð9 virtual function 11Ð7 union restriction 9Ð9 access-specifier 10Ð1 ANSI addition operator 5Ð11 C headers 2Ð5 additive operator 5Ð11 C summary, compatibility with 19Ð2 additive-expression 5Ð11 argc 3Ð3 address argument 1Ð3 of bit-field 9Ð10 class object as 12Ð9 of bit-field restriction 9Ð10 conversion 5Ð4, 8Ð7 of constructor 12Ð2 evaluation, order of 5Ð4 of overloaded function 5Ð6, 13Ð6 evaluation, unspecified order of 5Ð4 of qualified name 5Ð6 list, empty 8Ð7 address-of operator 5Ð6 list, variable 8Ð7 adjusting base class member access 11Ð3 matching ± see overloading resolution adjustment passing 5Ð3 array parameter 8Ð7 passing, reference and 8Ð13 function parameter 8Ð7 reference 5Ð3 aggregate 8Ð11 substitution 16Ð5 alert 2Ð7 to constructor, unspecified 5Ð8 alignment type checking 5Ð3 of array 5Ð10 type conversion 12Ð3 of bit-field 9Ð10 type, unknown 8Ð7 of bit-field, implementation dependency 9Ð10 argv[] 3Ð3 of class 5Ð10 arithmetic of class member 5Ð10 conversion 4Ð2 requirement, implementation dependency 3Ð5 exception 5Ð1 restriction 5Ð10 exception, implementation dependency 5Ð1 allocation extension to C single precision 19Ð2 function 12Ð6 pointer 5Ð11, 5Ð12 implementation dependency 9Ð4, 11Ð2 single precision floating point 4Ð2 implementation dependency base class 10Ð2 type 3Ð5 implementation dependency bit-field 9Ð10 unsigned 3Ð5 new, storage 5Ð7 array ambiguity alignment of 5Ð10 base class member 10Ð4 const 7Ð5 class conversion 10Ð5 constructor and 5Ð8 declaration type 7Ð1 declaration 8Ð6 declaration versus cast 8Ð3 declarator [] 8Ð6 declaration versus expression 6Ð6 declarator, multidimensional 8Ð6 detection, overloaded function 13Ð3 default constructor and 5Ð8 function declaration 8Ð11 example 8Ð6 if-else 6Ð3 initialization 8Ð11 member access 10Ð4 member 9Ð4 parentheses and 5Ð8 multidimensional 8Ð6 pointer conversion 4Ð3 new 5Ð8 pointer to member conversion 4Ð3 of class objects and constructor 12Ð9 reference conversion 4Ð3 of class objects and default constructor 12Ð9 resolution, scoping 10Ð4 of class objects and new 5Ð8 anachronism 19Ð12 of class objects initialization 8Ð12, 12Ð9 C function definition 19Ð12 order of execution, constructor and 12Ð2 assignment to this 19Ð13 order of execution, destructor and 12Ð5 DRAFT September 28, 1993 Index 3

overloading and pointer versus 13Ð2 class initializer 8Ð10 parameter adjustment 8Ð7 class initializer anachronism, old style 19Ð13 pointer conversion 4Ð3 class member access 10Ð1 size, default 8Ð6 class member access, adjusting 11Ð3 sizeof 5Ð7 class member ambiguity 10Ð4 storage of 8Ð7 class object, assignment 5Ð15 type 3Ð6 class pointer conversion 4Ð3 arrow operator ± see class member access operator class, private 11Ð2 asm class, public 11Ð2 declaration 7Ð8 class, reference to 4Ð3 implementation dependency 7Ð8 class virtual ± see virtual base class assembler 7Ð8 of 2Ð6 assignment base-specifier 10Ð1 and initialization, overloaded 12Ð9 base-specifier-list 10Ð1 and lvalue 5Ð15 Ben 13Ð2 base class object 5Ð15 binary const pointer 5Ð15 operator, interpretation of 13Ð7 conversion by 5Ð15 operator, overloaded 13Ð7 derived class object 5Ð15 binding expression 5Ð15 ± see virtual function, dynamic extension to C memberwise 19Ð2 default parameter 8Ð9 member 12Ð12 bit-field 9Ð10 memberwise 13Ð7 address of 9Ð10 of class object 12Ð13 alignment of 9Ð10 of derived class to base class 12Ð13 allocation, implementation dependency 9Ð10 operator 5Ð15, 12Ð12 declaration 9Ð10 operator access, default 12Ð12 implementation dependency alignment of 9Ð10 operator, default 13Ð7 implementation dependency sign of 9Ð10 operator, default 12Ð12, 12Ð13 layout 9Ð10 operator, overloaded 13Ð7 restriction 9Ð10 operator restriction, default 12Ð12 restriction, address of 9Ð10 pointer to const 5Ð15 restriction, pointer to 9Ð10 pointer to member 5Ð15 type of 9Ð10 pointer to volatile 5Ð15 unnamed 9Ð10 reference 8Ð13 zero width of 9Ð10 to class object 5Ð15 bitwise to pointer 5Ð15 AND operator 5Ð13 to pointer to member 5Ð15 exclusive OR operator 5Ð14 to pointer to member, zero 5Ð15 inclusive OR operator 5Ð14 to pointer, zero 5Ð15 operator 5Ð13 to reference 5Ð15 block to this anachronism 19Ð13 initialization in 6Ð6 volatile pointer 5Ð15 scope ± see local scope assignment-expression 5Ð15 statement {} 6Ð2 assignment-operator 5Ð15 structure 6Ð5 atexit() 3Ð4 body, function 8Ð10 auto bound pointer to member function, undefined 19Ð13 destruction of 6Ð5, 6Ð6 break statement 6Ð5 initialization 6Ð6 built-in type ± see fundamental type object initialization 8Ð10 byte 5Ð7 restriction 7Ð2 specifier 7Ð2 storage class 3Ð4 C C anonymous union, extension to 19Ð2 B class, extension to 19Ð2 backslash character 2Ð7 const, extension to 19Ð2 backspace 2Ð7 dangerous extension to 19Ð12 base declaration statement, extension to 19Ð2 class 10Ð1, 10Ð3 delete, extension to 19Ð2 class access 11Ð2 destructor, extension to 19Ð2 class allocation, implementation dependency 10Ð2 expression evaluation, difference from 19Ð1 class, assignment of derived class to 12Ð13 extension to 1Ð1, 19Ð1, 19Ð2 class cast 5Ð10 function definition anachronism 19Ð12 class constructor order of execution 12Ð2 headers, ANSI 2Ð5 class destructor order of execution 12Ð5 implementation dependency extension to 19Ð12 class, direct 10Ð1 inline function, extension to 19Ð2 class, indirect 10Ð1 linkage to 7Ð8 class initialization 12Ð9, 12Ð10 memberwise assignment, extension to 19Ð2 class initialization, order of 12Ð10 memberwise initialization, extension to 19Ð2 4 Index DRAFT September 28, 1993

multiple inheritance, extension to 19Ð2 abstract 10Ð8 new, extension to 19Ð2 access and friend 11Ð6 overloading delete, extension to 19Ð2 alignment of 5Ð10 overloading, extension to 19Ð2 anachronism, nonnested 19Ð14 overloading new, extension to 19Ð2 and type 9Ð1 pointer to member, extension to 19Ð2 base ± see base class protected, extension to 19Ð2 cast to undefined 5Ð10 reference type, extension to 19Ð2 constructor and abstract 10Ð9 scope, difference from 19Ð1 conversion 12Ð3 single precision arithmetic, extension to 19Ð2 conversion ambiguity 10Ð5 sizeof, difference from 19Ð1 declaration, forward 9Ð2, 10Ð1 summary, compatibility with 19Ð1 declaration syntax summary 18Ð9 summary, compatibility with ANSI 19Ð2 declaration {} 9Ð1 type checking, extension to 19Ð1 definition 9Ð1, 9Ð3 user-defined type, extension to 19Ð2 definition 3Ð2 void* pointer type extension to 19Ð2 definition example 9Ð4 volatile, extension to 19Ð2 definition name hiding 9Ð2 C++, evolution of 1Ð1 definition, scope of 9Ð2 call definition {} 9Ð1 ± see also function call, member function call, derived ± see derived class overloaded function call, virtual function call extension to C 19Ð2 by reference 5Ð3 friend 11Ð6 by value 5Ð3 lattice ± see DAG operator function 13Ð7 linkage of 3Ð3 carriage return 2Ð7 linkage specification 7Ð8 case label 6Ð1, 6Ð3 local ± see local class cast member ± see also member ambiguity, declaration versus 8Ð3 member access 5Ð4 base class 5Ð10 member access operator 5Ð4 class object 5Ð10 member, alignment of 5Ð10 const 5Ð10 member declaration 9Ð3 derived class 5Ð10 member function 9Ð6 dynamic 5Ð5 member initialization 8Ð11 implementation dependency pointer to function 5Ð10 member semantics 5Ð4 integer to pointer 5Ð9 member, static 3Ð4 lvalue 5Ð10 member storage class 3Ð4 of pointer to member anachronism 19Ð13 member syntax 5Ð4 operator 5Ð6, 5Ð9, 8Ð2 name 8Ð2 pointer to function 5Ð10 name as type definition 9Ð2 pointer to integer 5Ð9 name declaration 3Ð1 pointer to member 5Ð10 name, elaborated 7Ð6, 9Ð2, 9Ð3 pointer to pointer 5Ð10 name, point of declaration 9Ð3 reference 5Ð10 name, scope of 9Ð2 to undefined class 5Ð10 name, typedef 7Ð4, 7Ð5, 9Ð3 cast-expression 5Ð9 nested ± see nested class casting 5Ð4, 5Ð9 object as argument 12Ð9 pointer to volatile 5Ð10 object, assignment of 12Ð13 catch 15Ð1 object, assignment to 5Ð15 c-char 2Ð6 object cast 5Ð10 c-char-sequence 2Ð6 object, const 7Ð5, 9Ð7 change object copy 12Ð12 to const object, implementation dependency 5Ð10 object copy ± see also copy constructor to const object, undefined 7Ð5 object copy example 12Ð13 to string literal, undefined 2Ð8 object initialization 8Ð11, 12Ð8 char object initialization ± see also constructor implementation dependency sign of 3Ð5 object layout 9Ð4, 10Ð3 integer conversion 4Ð1 object, member 9Ð4 literal, implementation dependency value of 2Ð7 object, operations on 9Ð1 type 3Ð5 object return type 12Ð9 type, signed 3Ð5 object, sizeof 5Ð7 type specifier 7Ð6 objects and constructor, array of 12Ð9 type, unsigned 3Ð5 objects and default constructor, array of 12Ð9 character objects and new, array of 5Ð8 array initialization 8Ð13 objects initialization, array of 8Ð12, 12Ð9 constant 2Ð7 pointer to abstract 10Ð9 literal 2Ð7 polymorphic 10Ð6 literal, type of 2Ð7 scope 3Ð2 signed 3Ð5 scope of enumerator 7Ð8 string 2Ð8 sizeof, empty 9Ð1 character-literal 2Ð6 template 14Ð2 class 3Ð6, 9Ð1 type restriction, member of 12Ð9 DRAFT September 28, 1993 Index 5

unnamed 7Ð5 expression, pointer to member 5Ð6 class integer 2Ð6 type specifier 7Ð6 long 2Ð6 versus struct 9Ð1 pointer declaration 8Ð4 versus union 9Ð1 pointer example 8Ð4 class-key 7Ð6, 9Ð1 unsigned 2Ð6 class-name 9Ð1 constant-expression 5Ð16 class-specifier 9Ð1 construction, order-of 3Ð4 comma constructor 12Ð1 operator 5Ð16 access, default copy 12Ð12 operator, side effects and 5Ð16 address of 12Ð2 comment 2Ð3 anachronism, free store and 19Ð13 /* */ 2Ð4 anachronism, this and 19Ð13 // 2Ð4 and abstract class 10Ð9 comparison and array 5Ð8 implementation dependency pointer 5Ð13 and array order of execution 12Ð2 pointer 5Ð13 and const 9Ð8, 12Ð1 pointer to function 5Ð13 and initialization 12Ð8 undefined pointer 5Ð12, 5Ð13 and initialization example 12Ð8 void* pointer 5Ð13 and member function 12Ð2 compatibility and member function call 12Ð11 with ANSI C summary 19Ð2 and new 5Ð8 with C summary 19Ð1 and new, implementation dependency 5Ð8 compilation, separate 2Ð1 and return 6Ð5 compiler control line ± see preprocessing directive and static objects order of execution 12Ð9 complete object 1Ð2 and virtual function call 12Ð11 compound statement 6Ð2 and volatile 9Ð8, 12Ð1 compound-statement 6Ð2 array of class objects and 12Ð9 concatenation call, explicit 12Ð2 string 2Ð8 conversion by 12Ð3 undefined string literal 2Ð8 conversion by ± see also user-defined conversion condition 6Ð2 copy 12Ð1, 12Ð2, 12Ð12 conditional default ± see default constructor expression operator 5Ð14 default copy 12Ð12, 12Ð13 inclusion 16Ð2 definition 8Ð10 conditional-expression, throw-expression in 5Ð14 example 12Ð2 conditions, rules for 6Ð2 exception handling 15Ð3 consistency for temporary 12Ð2 example, linkage 7Ð2 inheritance of 12Ð1 linkage 3Ð3, 7Ð2 local object 3Ð4 linkage specification 7Ð9 order of execution, base class 12Ð2 type declaration 3Ð3 order of execution, member 12Ð2 *const example 8Ð4 restriction 12Ð1, 12Ð2 const 3Ð6 restriction, default copy 12Ð12 array 7Ð5 type of 12Ð2 assignment, pointer to 5Ð15 union 9Ð9 cast 5Ð10 unspecified argument to 5Ð8 class object 7Ð5, 9Ð7 continue constructor and 9Ð8, 12Ð1 in for statement 6Ð4 destructor and 9Ð8, 12Ð5 statement 6Ð5 example 8Ð4 control line ± see preprocessing directive extension to C 19Ð2 conversion initialization 7Ð5, 8Ð11 ± see also type conversion initialization, pointer to 8Ð11 ambiguity, class 10Ð5 linkage of 3Ð3, 7Ð2 ambiguity, pointer 4Ð3 member function 9Ð7 ambiguity, pointer to member 4Ð3 member initialization 12Ð10 ambiguity, reference 4Ð3 object, implementation dependency change to 5Ð10 anachronism, pointer to member 19Ð13 object, undefined change to 7Ð5 and name hiding, user-defined 12Ð5 operand 5Ð1 argument 5Ð4, 8Ð7 overloading and 13Ð1 arithmetic 4Ð2 pointer assignment 5Ð15 array pointer 4Ð3 pointer initialization 8Ð11 base class pointer 4Ð3 reference 8Ð13 by assignment 5Ð15 type 7Ð5 by constructor 12Ð3 void* pointer conversion 4Ð3 char integer 4Ð1 volatile void* pointer conversion 4Ð3 class 12Ð3 constant 2Ð5, 3Ð6, 5Ð2 const void* pointer 4Ð3 character 2Ð7 const volatile void* pointer 4Ð3 enumeration 7Ð7 derived class pointer 4Ð3 expression 5Ð16 explicit type ± see casting 6 Index DRAFT September 28, 1993

floating point integer 4Ð2 asm 7Ð8 function ± see also user-defined conversion bit-field 9Ð10 implementation dependency floating point 4Ð2 class member 9Ð3 implementation dependency integer 4Ð1 class name 3Ð1 implementation dependency pointer integer 5Ð9 class name, point of 9Ð3 implicit 4Ð1, 5Ð2, 12Ð3 consistency, type 3Ð3 implicit user-defined 12Ð4 constant pointer 8Ð4 inheritance of user-defined 12Ð4 default parameter 8Ð8 integer 4Ð1 definition versus 3Ð1 lvalue 4Ð1 ellipsis in function 5Ð4, 8Ð7 null pointer 4Ð3 enumerator, point of 3Ð2 operator 5Ð2, 12Ð4 example 3Ð1, 8Ð8 out of range value, undefined 4Ð2 example, function 8Ð8 overloaded function and standard 13Ð4 extern 3Ð1 overloading resolution and 13Ð3 extern reference 8Ð13 overloading resolution and pointer 13Ð6 forward 7Ð3 overloading resolution and standard 13Ð4 forward class 9Ð2, 10Ð1 overloading resolution and user-defined 13Ð4, 13Ð5 function 3Ð1, 8Ð7 pointer 4Ð2 function member 9Ð6 pointer to function 4Ð3 function template 14Ð4 pointer to member 4Ð3 hiding ± see name hiding pointer to member void* 4Ð4 in for, scope of 6Ð4 reference 4Ð3 in for statement 6Ð4 return type 6Ð5 in switch statement 6Ð3 rules, type 4Ð2 matching, overloaded function 13Ð2 safe floating point 4Ð2 member 9Ð3 signed unsigned integer 4Ð1 multiple 3Ð3 standard 4Ð1 name 3Ð1 type of 12Ð4 name, point of 3Ð2 user-defined 5Ð2, 12Ð3, 12Ð4 overloaded name and access 11Ð5 virtual user-defined 12Ð4 overloaded name and friend 11Ð5 void* pointer 4Ð3 parameter 8Ð7 volatile const void* pointer 4Ð3 parentheses in 8Ð3 volatile void* pointer 4Ð3 pointer 8Ð4 zero pointer 4Ð3 reference 8Ð4 conversion-function-id 12Ð4 register 7Ð2 conversions specifier 7Ð1 cv-qualifier pointer 4Ð2 statement 6Ð5 cv-qualifier reference 4Ð3 statement, extension to C 19Ð2 copy static member 3Ð1 class object 12Ð12 storage class 7Ð2 constructor 12Ð1, 12Ð2, 12Ð12 syntax summary 18Ð6 constructor access, default 12Ð12 syntax summary, class 18Ð9 constructor, default 12Ð12, 12Ð13 template 14Ð4 constructor restriction, default 12Ð12 template class 14Ð4 example, class object 12Ð13 template function 14Ð4 ctor-initializer 12Ð9 type 8Ð3 cv-qualifier 3Ð6 type ambiguity 7Ð1 pointer conversions 4Ð2 typedef 3Ð1 reference conversions 4Ð3 typedef as type 7Ð4 cv-qualifier 8Ð2 versus cast ambiguity 8Ð3 versus expression ambiguity 6Ð6 {}, class 9Ð1 D {}, enum 7Ð6 declaration 7Ð1 DAG declaration-seq 7Ð8 multiple inheritance 10Ð3 declaration-statement 6Ð5 nonvirtual base class 10Ð3 declarator 7Ð1, 8Ð1 virtual base class 10Ð3 &, reference 8Ð4 dangerous extension to C 19Ð12 (), function 8Ð7 data member ± see member *, pointer 8Ð4 deallocation ± see delete ::*, pointer to member 8Ð5 decimal literal 2Ð6 [], array 8Ð6 decimal-literal 2Ð5 example 8Ð2 decimal-point definition 17Ð9 initializer, temporary and 12Ð3 declaration 3Ð1, 7Ð1 meaning of 8Ð3 :, field 9Ð10 multidimensional array 8Ð6 access 11Ð3 syntax summary 18Ð8 ambiguity, function 8Ð11 declarator 8Ð1 array 8Ð6 declarator-id 8Ð2 as definition 7Ð2 decl-specifier 7Ð1 DRAFT September 28, 1993 Index 7

decrement {}, class 9Ð1 operator 5Ð5, 5Ð6, 5Ð7 delete 5Ð9, 12Ð7 operator, overloaded 13Ð8 destructor and 5Ð9, 12Ð5 default example 12Ð7 access control 11Ð1 example, destructor and 12Ð8 argument, overloading resolution and 13Ð3 example, scope of 12Ð8 array size 8Ð6 extension to C 19Ð2 assignment operator 13Ð7 extension to C overloading 19Ð2 assignment operator 12Ð12, 12Ð13 overloading and 12Ð7 assignment operator access 12Ð12 type of 12Ð7 assignment operator restriction 12Ð12 undefined 5Ð9 constructor 12Ð1, 12Ð9, 12Ð12 undefined value 5Ð9 constructor and array 5Ð8 deleted object, undefined 5Ð9 constructor and initialization 12Ð8 delete-expression 5Ð9 constructor and new 5Ð8 dereferencing 5Ð2 constructor, array of class objects and 12Ð9 ± see also indirection copy constructor 12Ð12, 12Ð13 derivation ± see inheritance copy constructor access 12Ð12 derived copy constructor restriction 12Ð12 class 10Ð1 destructor 12Ð5 class cast 5Ð10 initialization 8Ð11 class example 10Ð2 member access, struct 9Ð1 class, most 12Ð10 member access, union 9Ð1 class object, assignment 5Ð15 parameter and name hiding 8Ð9 class, overloading and 13Ð2 parameter binding 8Ð9 class pointer conversion 4Ð3 parameter declaration 8Ð8 class to base class, assignment of 12Ð13 parameter evaluation 8Ð9 type 3Ð6 parameter example 8Ð8, 8Ð9 destruction parameter, overloaded operator and 13Ð7 of auto 6Ð5, 6Ð6 parameter, overloading and 8Ð10 of local static 6Ð6 parameter, scope of 8Ð9 of local variable 6Ð5, 6Ð6 parameter, temporary and 12Ð3 of temporary 12Ð3 parameter type checking 8Ð9 of temporary, order of 12Ð3 type int 7Ð5 order-of 3Ð4 default label 6Ð1, 6Ð3 destructor 12Ð5 #define 16Ð5 anachronism, free store and 19Ð13 definition anachronism, this and 19Ð13 NTCS 17Ð8 and array order of execution 12Ð5 and initialization 7Ð2 and const 9Ð8, 12Ð5 class 3Ð2 and delete 5Ð9, 12Ð5 class 9Ð1, 9Ð3 and delete example 12Ð8 class name as type 9Ð2 and exit from scope 6Ð5 constructor 8Ð10 and fundamental type 12Ð6 decimal-point 17Ð9 and member function 12Ð5 declaration as 7Ð2 and member function call 12Ð11 enumerator 3Ð2 and placement of object 12Ð6 enumerator point of 7Ð7 and static objects order of execution 12Ð9 example 3Ð1 and virtual function call 12Ð11 example, function 8Ð10 and volatile 9Ð8, 12Ð5 example, nested class 9Ð10, 9Ð11 call example, explicit 12Ð6 function 3Ð2 call, explicit 12Ð5, 12Ð6 function 8Ð10 call, implicit 12Ð5 function template 14Ð4 call, unspecified 6Ð6 inline member function 3Ð3 default 12Ð5 letter 17Ð9 exception handling 15Ð3 local class 9Ð11 extension to C 19Ð2 member 9Ð7 for temporary 12Ð2 member function 9Ð6, 9Ð7, 9Ð8 inheritance of 12Ð5 name hiding, class 9Ð2 local object 3Ð4 nested class 9Ð10 order of execution 12Ð5 object 3Ð2 order of execution, base class 12Ð5 pure virtual function 10Ð8 order of execution, member 12Ð5 scope, macro 16Ð6 program termination and 12Ð5 scope of class 9Ð2 pure virtual 12Ð5 scope of function 3Ð3 restriction 12Ð5 static member 9Ð9 static object 3Ð4 string 17Ð8 union 9Ð9 template class 14Ð4 virtual 12Ð5 template function 14Ð4 difference versus declaration 3Ð1 from C expression evaluation 19Ð1 virtual function 10Ð7 from C scope 19Ð1 8 Index DRAFT September 28, 1993

from C sizeof 19Ð1 point of declaration 3Ð2 digit 2Ð4 point of definition 7Ð7 digit-sequence 2Ð8 redefinition 7Ð7 digraph 2Ð3, 2Ð5 restriction 7Ð7 direct base class 10Ð1 value of 7Ð7 direct-abstract-declarator 8Ð2 enumerator 7Ð7 direct-declarator 8Ð2 environment, program 3Ð3 directed acyclic graph ± see DAG equality operator 5Ð13 directive equality-expression 5Ð13 error 16Ð8 equivalence null 16Ð8 template type 14Ð3 pragma 16Ð8 type 7Ð4, 9Ð2 preprocessing 16Ð1 error directive 16Ð8 direct-new-declarator 5Ð7 #error 16Ð8 distinct string 2Ð8 escape division character ± see backslash by zero, undefined 5Ð1, 5Ð11 sequence 2Ð7 implementation dependency 5Ð11 sequence, undefined 2Ð7 operator 5Ð11 escape-sequence 2Ð6 do statement 6Ð3, 6Ð4 evaluation dominance, virtual base class 10Ð5 default parameter 8Ð9 dot operator ± see class member access operator difference from C expression 19Ð1 double quote 2Ð7 new, unspecified order of 5Ð8 double of expression, order of 5Ð1 literal 2Ð8 order of argument 5Ð4 type 3Ð5 unspecified order of 5Ð1 type specifier 7Ð6 unspecified order of argument 5Ð4 dynamic unspecified order of function call 5Ð4 binding ± see virtual function evolution of C++ 1Ð1 cast 5Ð5 exact match, overloading resolution 13Ð4 initialization 3Ð4 example type 1Ð3 *const 8Ð4 array 8Ð6 class definition 9Ð4 E class object copy 12Ð13 const 8Ð4 E suffix 2Ð8 constant pointer 8Ð4 elaborated constructor 12Ð2 class name 7Ð6, 9Ð2, 9Ð3 constructor and initialization 12Ð8 enum name 7Ð6 declaration 3Ð1, 8Ð8 type specifier ± see elaborated class name declarator 8Ð2 elaborated-type-specifier 7Ð6 default parameter 8Ð8, 8Ð9 #elif 16Ð3 definition 3Ð1 elimination of temporary 12Ð2 delete 12Ð7 ellipsis derived class 10Ð2 example 8Ð8 destructor and delete 12Ð8 in function declaration 5Ð4, 8Ð7 ellipsis 8Ð8 overloading resolution and 13Ð3, 13Ð4 enumeration 7Ð7 #else 16Ð3 explicit destructor call 12Ð6 else 6Ð2 explicit qualification 10Ð4 empty friend Ð Ð 9 2 argument list 8 7 friend Ð sizeof Ð function 11 5 class 9 1 Ð Ð function declaration 8 8 statement 6 2 Ð #endif Ð function definition 8 10 16 3 Ð enum incomplete type 3 5 linkage consistency 7Ð2 declaration {} 7Ð6 local class 9Ð11 name, elaborated 7Ð6 member function 9Ð6, 11Ð5 overloading and 13Ð2 member name access 11Ð3 type of 7Ð6, 7Ð7 nested class 9Ð10 type specifier 7Ð6 nested class definition 9Ð10, 9Ð11 enumerated type 3Ð5 nested class forward declaration 9Ð11 enumeration 7Ð6 nested type name 9Ð12 constant 7Ð7 overloading 13Ð1 example 7Ð7 pointer to member 8Ð5 underlying type 7Ð7 pure virtual function 10Ð8 enumerator scope of delete 12Ð8 class, scope of 7Ð8 scope resolution operator 10Ð4 definition 3Ð2 static member 9Ð8 linkage of 3Ð3 subscripting 8Ð6 member 7Ð8 type name 8Ð2 DRAFT September 28, 1993 Index 9

typedef 7Ð4 linkage of 7Ð2 unnamed parameter 8Ð10 linkage specification 7Ð8 variable parameter list 8Ð8 reference declaration 8Ð13 virtual function 10Ð6, 10Ð7 restriction 7Ð2 exception external linkage 3Ð3 arithmetic 5Ð1 handler 15Ð3 handling 15Ð1 F handling constructor 15Ð3 F suffix 2Ð8 handling destructor 15Ð3 f suffix 2Ð8 handling syntax summary 18Ð12 field declaration : 9Ð10 implementation dependency arithmetic 5Ð1 file 2Ð1, 3Ð3 throwing 15Ð2 scope 3Ð2 exception-declaration 15Ð1 source 2Ð1 exception-specification 15Ð4 final overrider 10Ð6 exit from scope, destructor and 6Ð5 fIoctal-digit Ð exit() Ð Ð 2 6 3 3, 3 4 float explanation, subscripting 8Ð6 literal 2Ð8 explicit type 3Ð5 constructor call 12Ð2 type specifier 7Ð6 destructor call 12Ð5, 12Ð6 2Ð5 destructor call example 12Ð6 floating qualification example 10Ð4 point arithmetic, single precision 4Ð2 type conversion ± see casting point conversion, implementation dependency 4Ð2 exponent-part 2Ð8 point conversion, safe 4Ð2 expression 5Ð1 point integer conversion 4Ð2 ambiguity, declaration versus 6Ð6 point literal 2Ð8 assignment 5Ð15 point literal, type of 2Ð8 constant 5Ð16 point type 3Ð5 evaluation, difference from C 19Ð1 point type, implementation dependency 3Ð5 order of evaluation of 5Ð1 floating-constant 2Ð7 parenthesized 5Ð2 floating-suffix Ð Ð 2 8 pointer to member constant 5 6 for postfix 5Ð3 scope of declaration in 6Ð4 primary 5Ð2 statement 6Ð3, 6Ð4 reference 5Ð2 statement, continue in 6Ð4 statement 6Ð2 statement, declaration in 6Ð4 syntax summary 18Ð1 form feed 2Ð7 unary 5Ð6 formal unspecified 5Ð4 argument ± see also parameter expression 5Ð16 argument ± see parameter expression-list 5Ð3 forward expression-statement 6Ð2 class declaration 9Ð2, 10Ð1 extension declaration 7Ð3 to C 1Ð1, 19Ð1, 19Ð2 declaration example, nested class 9Ð11 to C anonymous union 19Ð2 fractional-constant 2Ð7 to C class 19Ð2 const Ð free to C 19 2 ± new delete Ð store see also , to C, dangerous 19 12 Ð Ð store and constructor anachronism 19 13 to C declaration statement 19 2 Ð delete Ð store and destructor anachronism 19 13 to C 19 2 Ð Ð friend function, scope of 11 6 to C destructor 19 2 friend Ð to C, implementation dependency 19 12 Ð Ð access specifier and 11 6 to C inline function 19 2 Ð Ð class 11 6 to C memberwise assignment 19 2 Ð Ð class access and 11 6 to C memberwise initialization 19 2 Ð Ð declaration, overloaded name and 11 5 to C multiple inheritance 19 2 Ð new Ð example 9 2 to C 19 2 Ð Ð function, access and 11 5 to C overloading 19 2 Ð delete Ð function example 11 5 to C overloading 19 2 Ð new Ð function, inline 11 6 to C overloading 19 2 Ð Ð function, linkage of 11 6 to C pointer to member 19 2 Ð protected Ð function, member function and 11 5 to C 19 2 Ð Ð function, nested class 9 11 to C reference type 19 2 Ð Ð inheritance and 11 6 to C single precision arithmetic 19 2 Ð Ð member function 11 5 to C type checking 19 1 Ð Ð scope of 3 2 to C user-defined type 19 2 Ð void* Ð specifier 7 5 to C, pointer type 19 2 Ð volatile Ð template and 14 5 to C 19 2 virtual Ð extern and 10 7 function declaration 3Ð1 10 Index DRAFT September 28, 1993

± see also friend function, member function, inline statement 6Ð1, 6Ð5 function, virtual function grammar 18Ð1 allocation 12Ð6 greater argument ± see argument than operator 5Ð13 body 8Ð10 than or equal to operator 5Ð13 call 5Ð3 call evaluation, unspecified order of 5Ð4 call operator 5Ð3, 13Ð7 H call operator, overloaded 13Ð8 handler, exception 15Ð3 call, recursive 5Ð4 handler 15Ð1 call, undefined 5Ð10 handler-seq 15Ð1 cast, implementation dependency pointer to 5Ð10 handling exception ± see exception handling cast, pointer to 5Ð10 headers comparison, pointer to 5Ð13 ANSI C 2Ð5 conversion, pointer to 4Ð3 library 2Ð5 declaration 3Ð1, 8Ð7 standard 2Ð5 declaration ambiguity 8Ð11 hex number 2Ð7 declaration, ellipsis in 5Ð4, 8Ð7 hexadecimal literal 2Ð6 declaration example 8Ð8 hexadecimal-digit 2Ð6 declaration matching, overloaded 13Ð2 hexadecimal-escape-sequence 2Ð7 declarator () 8Ð7 hexadecimal-literal 2Ð5 definition 8Ð10 hiding ± see name hiding definition 3Ð2 horizontal tab 2Ð7 definition anachronism, C 19Ð12 definition anachronism, old style 19Ð12 definition example 8Ð10 definition, scope of 3Ð3 I linkage specification 7Ð8 id, qualified 5Ð2 linkage specification overloaded 7Ð9 identifier 2Ð4, 5Ð2, 7Ð1 member ± see member function _, underscore in 2Ð4 member declaration 9Ð6 identifier 2Ð4 name hiding 13Ð2 identifiers, reserved 17Ð9 name, overloaded 13Ð1 identities and overloading, operator 13Ð7 operator 13Ð6 id-expression 5Ð2 overloaded ± see also overloading id-expression 5Ð2 parameter ± see parameter #if 16Ð3 parameter adjustment 8Ð7 if statement 6Ð2, 6Ð3 pointer to member 5Ð11 #ifdef 16Ð3 prototype scope 3Ð2 if-else ambiguity 6Ð3 return ± see return #ifndef 16Ð3 return type ± see return type implementation scope 3Ð2 dependency __STDC__ 16Ð9 scope of friend 11Ð6 dependency alignment of bit-field 9Ð10 specifier 7Ð3 dependency alignment requirement 3Ð5 template 14Ð3 dependency allocation 9Ð4, 11Ð2 template declaration 14Ð4 dependency arithmetic exception 5Ð1 template definition 14Ð4 dependency asm 7Ð8 type 3Ð6, 8Ð7 dependency base class allocation 10Ð2 virtual ± see virtual function dependency bit-field allocation 9Ð10 function-body 8Ð10 dependency change to const object 5Ð10 function-definition 8Ð10 dependency constructor and new 5Ð8 function-like macro 16Ð4 dependency division 5Ð11 function-specifier 7Ð3 dependency extension to C 19Ð12 fundamental dependency floating point conversion 4Ð2 type 3Ð5 dependency floating point type 3Ð5 type conversion ± see conversion, user-defined dependency generation of temporary 12Ð2 conversion dependency integer conversion 4Ð1 type, destructor and 12Ð6 dependency left shift 5Ð12 dependency linkage of main() 3Ð3 dependency linkage specification 7Ð8 G dependency modulus 5Ð11 dependency object linkage 7Ð9 generated dependency overflow 5Ð1 constructor ± see default constructor dependency parameters to main() 3Ð3 destructor ± see default destructor dependency pointer comparison 5Ð13 global Ð union Ð dependency pointer integer conversion 5 9 anonymous 9 9 Ð Ð dependency pointer subtraction 5 12 name 3 2 Ð Ð dependency pointer to function cast 5 10 object storage class 3 4 wchar_t Ð goto dependency promotion of 4 1 dependency range of types 2Ð5 initialization and 6Ð6 dependency sign of bit-field 9Ð10 DRAFT September 28, 1993 Index 11

dependency sign of char 3Ð5 order of base class 12Ð10 dependency signed unsigned 4Ð1 order of member 12Ð10 dependency sizeof expression 5Ð7 order of virtual base class 12Ð10 dependency sizeof integral type 3Ð5 order-of 3Ð4 dependency sizeof type 3Ð5 overloaded assignment and 12Ð9 dependency string literal 2Ð8 parameter 5Ð3 dependency type of integer literal 2Ð6 pointer to const 8Ð11 dependency type of ptrdiff_t 5Ð12 pointer to volatile 8Ð11 dependency type of size_t 5Ð7 reference 8Ð5, 8Ð13 dependency type of sizeof expression 2Ð5 reference member 12Ð10 dependency value of char literal 2Ð7 register 6Ð6 dependency value of multicharacter literal 2Ð7 run-time 3Ð4 dependency volatile 7Ð5 static member 9Ð9 dependency wchar_t 3Ð5 static object 3Ð4, 8Ð10, 8Ð11 implicit struct 8Ð11 conversion 4Ð1, 5Ð2, 12Ð3 union 8Ð12, 9Ð9 destructor call 12Ð5 virtual base class 12Ð10, 12Ð12 user-defined conversion 12Ð4 volatile pointer 8Ð11 #include 16Ð3 initializer 8Ð10 inclusion base class 8Ð10 conditional 16Ð2 list {} 8Ð11 source file 16Ð3 member 8Ð10 incomplete scope of member 12Ð11 type 3Ð4 temporary and declarator 12Ð3 type example 3Ð5 initializer 8Ð10 increment initializer-clause 8Ð10 operator 5Ð5, 5Ð6, 5Ð7 initializer-list 8Ð10 operator, overloaded 13Ð8 inline indeterminate uninitialized variable 8Ð11 friend function 11Ð6 indirect base class 10Ð1 function 7Ð3 indirection 5Ð6 function, extension to C 19Ð2 operator 5Ð6 function, linkage of 3Ð3, 7Ð2, 7Ð3 inequality operator 5Ð13 member function 7Ð3, 9Ð8 inheritance 10Ð1 member function definition 3Ð3 ± see also multiple inheritance member function rewriting rules 9Ð8 and friend 11Ð6 inline specifier 7Ð3 of constructor 12Ð1 int of destructor 12Ð5 default type 7Ð5 of overloaded operator 13Ð7 type 3Ð5 of user-defined conversion 12Ð4 type specifier 7Ð6 init-declarator 8Ð1 integer init-declarator-list 8Ð1 cast, pointer to 5Ð9 initialization 8Ð10 constant 2Ð6 and goto 6Ð6 conversion 4Ð1 and new 5Ð8, 12Ð9 conversion, char 4Ð1 array 8Ð11 conversion, floating point 4Ð2 array of class objects 8Ð12, 12Ð9 conversion, implementation dependency 4Ð1 auto 6Ð6 conversion, implementation dependency pointer 5Ð9 auto object 8Ð10 conversion, signed unsigned 4Ð1 base class 12Ð9, 12Ð10 literal 2Ð6 character array 8Ð13 literal, base of 2Ð6 class member 8Ð11 literal, implementation dependency type of 2Ð6 class object 8Ð11, 12Ð8 literal, type of 2Ð6 class object ± see also constructor to pointer cast 5Ð9 const 7Ð5, 8Ð11 integer-literal 2Ð5 const member 12Ð10 integer-suffix 2Ð6 const pointer 8Ð11 integral constructor and 12Ð8 promotion 4Ð1, 5Ð4 default 8Ð11 type 3Ð5 default constructor and 12Ð8 type, implementation dependency sizeof 3Ð5 definition and 7Ð2 value, undefined unrepresentable 4Ð2 dynamic 3Ð4 internal linkage 3Ð3 example, constructor and 12Ð8 interpretation extension to C memberwise 19Ð2 of binary operator 13Ð7 in block 6Ð6 of unary operator 13Ð7 jump past 6Ð3, 6Ð6 invocation, macro 16Ð5 local object 3Ð4 iteration statement 6Ð3 local static 6Ð6 iteration-statement 6Ð3, 6Ð5 member 12Ð9, 12Ð12 scope 6Ð4 member object 12Ð10 order of 3Ð4, 10Ð3 12 Index DRAFT September 28, 1993

J specification function 7Ð8 specification, implementation dependency 7Ð8 Jessie 12Ð3 specification object 7Ð9 jump specification overloaded function 7Ð9 past initialization 6Ð3, 6Ð6 to C 7Ð8 statement 6Ð5 linkage-specification 7Ð8 jump-statement 6Ð5 list keyword 2Ð4 operator 2Ð4, 13Ð6 K {}, initializer 8Ð11 Kernighan and Ritchie 1Ð1 literal 2Ð5, 5Ð2 keyword 18Ð1 base of integer 2Ð6 anachronism, overload 19Ð12 character 2Ð7 list 2Ð4 decimal 2Ð6 Koenig, Andrew 15Ð1 double 2Ð8 float 2Ð8 floating point 2Ð8 L hexadecimal 2Ð6 Ð L implementation dependency string 2 8 implementation dependency type of integer 2Ð6 prefix 2Ð7, 2Ð8 implementation dependency value of char 2Ð7 suffix 2Ð6, 2Ð8 implementation dependency value of multicharacter l suffix 2Ð6, 2Ð8 2Ð7 label 6Ð5 integer 2Ð6 case 6Ð1, 6Ð3 long 2Ð6 default 6Ð1, 6Ð3 long double 2Ð8 name space 6Ð1 multicharacter 2Ð7 scope of 3Ð2, 6Ð1 octal 2Ð6 specifier : 6Ð1 type of character 2Ð7 labeled statement 6Ð1 type of floating point 2Ð8 lattice ± see DAG, class type of integer 2Ð6 layout unsigned 2Ð6 access specifier and object 11Ð2 literal 2Ð5 bit-field 9Ð10 local class object 9Ð4, 10Ð3 class definition 9Ð11 left class example 9Ð11 shift, implementation dependency 5Ð12 class member function 9Ð12 shift operator 5Ð12 class, member function in 9Ð8 shift, undefined 5Ð12 class restriction 9Ð12 length of name 2Ð4 class restriction, static member 9Ð8 less class, scope of 9Ð11 than operator 5Ð13 name, linkage of 3Ð3 than or equal to operator 5Ð13 object constructor 3Ð4 letter definition 17Ð9 object destructor 3Ð4 lexical conventions 2Ð1 object initialization 3Ð4 library headers 2Ð5 object, static 3Ð4 2Ð5, 3Ð5 object storage class 3Ð4 #line 16Ð8 scope 3Ð2 linkage 3Ð1, 3Ð3 static, destruction of 6Ð6 consistency 3Ð3, 7Ð2 static initialization 6Ð6 consistency example 7Ð2 variable, destruction of 6Ð5, 6Ð6 external 3Ð3 Ð logical implementation dependency object 7 9 Ð Ð AND operator 5 14 internal 3 3 Ð Ð AND operator, side effects and 5 14 of class 3 3 Ð const Ð Ð OR operator 5 14 of 3 3, 7 2 Ð Ð OR operator, side effects and 5 14 of enumerator 3 3 Ð Ð extern Ð negation operator 5 6, 5 7 of 7 2 long of friend function 11Ð6 constant 2Ð6 of inline function 3Ð3, 7Ð2, 7Ð3 double literal 2Ð8 of local name 3Ð3 double type 3Ð5 of main(), implementation dependency 3Ð3 literal 2Ð6 of member function 3Ð3 type 3Ð5 of static 3Ð3, 7Ð2, 7Ð9 type specifier 7Ð6 of static member 3Ð3 typedef and 7Ð2 of template 3Ð3 long-suffix 2Ð6 of typedef 3Ð3 lvalue 3Ð7 specification 7Ð8 assignment and 5Ð15 specification class 7Ð8 cast 5Ð10 specification consistency 7Ð9 conversion 4Ð1 specification, extern 7Ð8 modifiable 3Ð7 DRAFT September 28, 1993 Index 13

M initialization, static 9Ð9 initializer 8Ð10 macro initializer, scope of 12Ð11 definition scope 16Ð6 linkage of static 3Ð3 function-like 16Ð4 local class restriction, static 9Ð8 invocation 16Ð5 name access 11Ð1 name 16Ð4 name access example 11Ð3 object-like 16Ð4 name, overloaded 9Ð4 parameters 16Ð5 object initialization 12Ð10 preprocessor 16Ð1 of class type restriction 12Ð9 replacement 16Ð4 pointer to ± see pointer to member syntax summary 18Ð11 static 9Ð8 main() 3Ð3 static class 3Ð4 implementation dependency linkage of 3Ð3 storage class, class 3Ð4 implementation dependency parameters to 3Ð3 template and static 14Ð6 parameters to 3Ð3 type of static 5Ð6, 9Ð9 return from 3Ð4 use, static 9Ð8 management anachronism, memory 19Ð13 member-declaration 9Ð3 manual organization 1Ð1 member-declarator 9Ð3 meaning of declarator 8Ð3 member-specification 9Ð3 member memberwise ± see also base class member assignment 13Ð7 access operator, overloaded 13Ð8 assignment, extension to C 19Ð2 access ambiguity 10Ð4 initialization, extension to C 19Ð2 access, base class 10Ð1 mem-initializer 12Ð10 access, class 5Ð4 memory access, protected 11Ð7 management ± see also new, delete access, struct default 9Ð1 management anachronism 19Ð13 access, union default 9Ð1 model 1Ð2 alignment of class 5Ð10 missing array 9Ð4 storage class specifier 7Ð2 assignment 12Ð12 type specifier 7Ð5 class object 9Ð4 modifiable lvalue 3Ð7 constructor order of execution 12Ð2 modulus declaration 9Ð3 implementation dependency 5Ð11 declaration, class 9Ð3 operator 5Ð11 declaration, static 3Ð1 most derived class 12Ð10 definition 9Ð7 multicharacter definition, static 9Ð9 literal 2Ð7 destructor order of execution 12Ð5 literal, implementation dependency value of 2Ð7 enumerator 7Ð8 multidimensional example, static 9Ð8 array 8Ð6 function and access control 12Ð1 array declarator 8Ð6 function and friend function 11Ð5 multiple function call, constructor and 12Ð11 declaration 3Ð3 function call, destructor and 12Ð11 inheritance 10Ð1, 10Ð3 function call, undefined 9Ð7 inheritance DAG 10Ð3 function, class 9Ð6 inheritance, extension to C 19Ð2 function, const 9Ð7 inheritance, virtual and 10Ð7 function, constructor and 12Ð2 multiplication operator 5Ð11 function definition 9Ð6, 9Ð7, 9Ð8 multiplicative operator 5Ð11 function definition, inline 3Ð3 multiplicative-expression 5Ð11 function, destructor and 12Ð5 function example 9Ð6, 11Ð5 function, friend 11Ð5 function in local class 9Ð8 N function in nested class 9Ð8 name 2Ð4, 3Ð1, 5Ð2 function, inline 7Ð3, 9Ð8 address of qualified 5Ð6 function, linkage of 3Ð3 and translation unit 3Ð1 function, local class 9Ð12 class ± see class name function, nested class 9Ð10 declaration 3Ð1 function, overloading resolution and 13Ð3 elaborated enum 7Ð6 function rewriting rules, inline 9Ð8 global 3Ð2 function, static 9Ð6, 9Ð8 hiding 3Ð2, 3Ð3, 5Ð2, 6Ð5 function template 14Ð5 hiding, class definition 9Ð2 function, union 9Ð9 hiding, default parameter and 8Ð9 function, volatile 9Ð7 hiding, function 13Ð2 initialization 12Ð9, 12Ð12 hiding, overloading versus 13Ð2 initialization, const 12Ð10 hiding, user-defined conversion and 12Ð5 initialization, order of 12Ð10 length of 2Ð4 initialization, reference 12Ð10 linkage of local 3Ð3 14 Index DRAFT September 28, 1993

macro 16Ð4 destructor, local 3Ð4 overloaded function 13Ð1 destructor static 3Ð4 overloaded member 9Ð4 initialization, auto 8Ð10 point of declaration 3Ð2 initialization, local 3Ð4 scope of 3Ð2 initialization, static 3Ð4, 8Ð10, 8Ð11 space, label 6Ð1 layout, access specifier and 11Ð2 type ± see type name linkage, implementation dependency 7Ð9 negation operator, logical 5Ð6, 5Ð7 linkage specification 7Ð9 nested static local 3Ð4 class anachronism, scope of 19Ð14 storage class, global 3Ð4 class definition 9Ð10 storage class, local 3Ð4 class definition example 9Ð10, 9Ð11 temporary ± see temporary class example 9Ð10 undefined deleted 5Ð9 class forward declaration example 9Ð11 unnamed 12Ð2 class friend function 9Ð11 object-like macro 16Ð4 class member function 9Ð10 octal class, member function in 9Ð8 literal 2Ð6 class qualified name 7Ð6 number 2Ð7 class, scope of 9Ð10 octal-escape-sequence 2Ð7 type name 9Ð12 octal-literal 2Ð5 type name example 9Ð12 old type name, scope of 9Ð12 style base class initializer anachronism 19Ð13 nested-class-specifier 7Ð6 style function definition anachronism 19Ð12 new 5Ð7, 5Ð8, 12Ð6 one-definition rule 3Ð2 array 5Ð8 one’s complement operator 5Ð6, 5Ð7 array of class objects and 5Ð8 operand constructor and 5Ð8 const 5Ð1 default constructor and 5Ð8 reference 5Ð1 extension to C 19Ð2 volatile 5Ð1 extension to C overloading 19Ð2 operations on class object 9Ð1 implementation dependency constructor and 5Ð8 operator initialization and 5Ð8, 12Ð9 %= 5Ð15 placement syntax 5Ð8 &= 5Ð15 scoping and 5Ð8 *= 5Ð15 storage allocation 5Ð7 += 5Ð7, 5Ð15 type of 12Ð7 -= 5Ð15 unspecified order of evaluation 5Ð8 /= 5Ð15 unspecified value 5Ð8 <<= 5Ð15 new-declarator 5Ð7 >>= 5Ð15 new-expression 5Ð7 ^= 5Ð15 2Ð5 additive 5Ð11 new-initializer 5Ð7 address-of 5Ð6 new-line 2Ð7 assignment 5Ð15, 12Ð12 new-placement 5Ð7 bitwise 5Ð13 new-type-id 5Ð7 bitwise AND 5Ð13 nondigit 2Ð4 bitwise exclusive OR 5Ð14 nonnested class anachronism 19Ð14 bitwise inclusive OR 5Ð14 nonvirtual base class DAG 10Ð3 cast 5Ð6, 5Ð9, 8Ð2 nonzero-digit 2Ð6 class member access 5Ð4 notation, syntax 1Ð1 comma 5Ð16 NTCS definition 17Ð8 conditional expression 5Ð14 null conversion 5Ð2, 12Ð4 character 0 2Ð8 decrement 5Ð5, 5Ð6, 5Ð7 directive 16Ð8 default assignment 13Ð7 pointer 4Ð2, 4Ð3, 5Ð13 delete ± see delete pointer conversion 4Ð3 division 5Ð11 reference 8Ð5 equality 5Ð13 statement 6Ð2 example, scope resolution 10Ð4 number function call 5Ð3, 13Ð7 hex 2Ð7 function call 13Ð7 octal 2Ð7 greater than 5Ð13 greater than or equal to 5Ð13 identities and overloading 13Ð7 O increment 5Ð5, 5Ð6, 5Ð7 indirection 5Ð6 object 1Ð2, 3Ð1, 3Ð7 inequality 5Ð13 class ± see also class object left shift ± see left shift operator complete 1Ð2 less than 5Ð13 constructor, local 3Ð4 less than or equal to 5Ð13 definition 3Ð2 list 2Ð4, 13Ð6 destructor and placement of 12Ð6 logical AND 5Ð14 DRAFT September 28, 1993 Index 15

logical OR 5Ð14 binary operator 13Ð7 logical negation 5Ð6, 5Ð7 decrement operator 13Ð8 modulus 5Ð11 function, address of 5Ð6, 13Ð6 multiplication 5Ð11 function ambiguity detection 13Ð3 multiplicative 5Ð11 function and standard conversion 13Ð4 new ± see new function call operator 13Ð8 one’s complement 5Ð6, 5Ð7 function call resolution ± see also argument matching, overloaded 5Ð1 overloading resolution overloading ± see also overloaded operator function declaration matching 13Ð2 overloading restrictions 13Ð7 function, linkage specification 7Ð9 pointer to member 5Ð11 function name 13Ð1 precedence of 5Ð1 increment operator 13Ð8 relational 5Ð13 member access operator 13Ð8 right shift; right shift operator 5Ð12 member name 9Ð4 scope resolution 3Ð2, 5Ð2, 9Ð7, 10Ð1, 10Ð8 name and access declaration 11Ð5 shift ± see left shift operator, right shift operator name and friend declaration 11Ð5 side effects and comma 5Ð16 operator 13Ð6 side effects and logical AND 5Ð14 operator 5Ð1 side effects and logical OR 5Ð14 operator 13Ð6 sizeof 5Ð6, 5Ð7 operator and default parameter 13Ð7 subscripting 5Ð3, 13Ð7 operator, inheritance of 13Ð7 unary 5Ð6 subscripting operator 13Ð8 unary minus 5Ð6, 5Ð7 unary operator 13Ð7 unary plus 5Ð6 overloading 8Ð7, 9Ð2, 13Ð1 use, scope resolution 9Ð8 and access 13Ð3 |= 5Ð15 and const 13Ð1 operator and default parameter 8Ð10 function 13Ð6 and delete 12Ð7 overloaded 13Ð6 and derived class 13Ð2 operator 13Ð6 and enum 13Ð2 operator-function-id 13Ð6 and pointer 13Ð1 optimization of temporary ± see elimination of and pointer versus array 13Ð2 temporary and reference 13Ð1 OR and return type 13Ð1 operator, bitwise exclusive 5Ð14 and scope 13Ð2 operator, bitwise inclusive 5Ð14 and static 13Ð1 operator, logical 5Ð14 and typedef 13Ð2 operator, side effects and logical 5Ð14 and volatile 13Ð1 order delete, extension to C 19Ð2 of argument evaluation 5Ð4 example 13Ð1 of argument evaluation, unspecified 5Ð4 extension to C 19Ð2 of base class initialization 12Ð10 new, extension to C 19Ð2 of destruction of temporary 12Ð3 operator identities and 13Ð7 of evaluation new, unspecified 5Ð8 postfix ++ and -- 13Ð8 of evaluation of expression 5Ð1 prefix ++ and -- 13Ð8 of evaluation, unspecified 5Ð1 resolution 13Ð3 of execution, base class constructor 12Ð2 resolution and access control 10Ð4 of execution, base class destructor 12Ð5 resolution and conversion 13Ð3 of execution, constructor and array 12Ð2 resolution and default argument 13Ð3 of execution, constructor and static objects 12Ð9 resolution and ellipsis 13Ð3, 13Ð4 of execution, destructor 12Ð5 resolution and member function 13Ð3 of execution, destructor and array 12Ð5 resolution and pointer conversion 13Ð6 of execution, destructor and static objects 12Ð9 resolution and promotion 13Ð4 of execution, member constructor 12Ð2 resolution and standard conversion 13Ð4 of execution, member destructor 12Ð5 resolution and user-defined conversion 13Ð4, 13Ð5 of function call evaluation, unspecified 5Ð4 resolution exact match 13Ð4 of initialization 3Ð4, 10Ð3 resolution rules 13Ð4 of member initialization 12Ð10 resolution, template function 14Ð3 of virtual base class initialization 12Ð10 resolution trivial conversions 13Ð4 order-of restriction 13Ð7 construction 3Ð4 subsequence rule 13Ð3 destruction 3Ð4 versus name hiding 13Ð2 initialization 3Ð4 overrider, final 10Ð6 organization, manual 1Ð1 out of range value, undefined conversion 4Ð2 overflow 5Ð1 P implementation dependency 5Ð1 parameter 1Ð3, 8Ð10 overload keyword anachronism 19Ð12 adjustment, array 8Ð7 overloaded adjustment, function 8Ð7 assignment and initialization 12Ð9 declaration 8Ð7 assignment operator 13Ð7 16 Index DRAFT September 28, 1993

default ± see default parameter to function conversion 4Ð3 example, unnamed 8Ð10 to integer cast 5Ð9 initialization 5Ð3 to member 3Ð6, 5Ð11 list example, variable 8Ð8 to member anachronism, cast of 19Ð13 list, variable 5Ð4, 8Ð7 to member, assignment 5Ð15 reference 8Ð4 to member, assignment to 5Ð15 scope of 3Ð2 to member cast 5Ð10 temporary and default 12Ð3 to member constant expression 5Ð6 void 8Ð7 to member conversion 4Ð3 parameter-declaration 8Ð7 to member conversion ambiguity 4Ð3 parameterized type ± see template to member conversion anachronism 19Ð13 parameters to member declarator ::* 8Ð5 macro 16Ð5 to member example 8Ð5 to main() 3Ð3 to member, extension to C 19Ð2 to main(), implementation dependency 3Ð3 to member function 5Ð11 parentheses to member function, undefined bound 19Ð13 and ambiguity 5Ð8 to member operator 5Ð11 in declaration 8Ð3 to member void* conversion 4Ð4 parenthesized expression 5Ð2 to member, zero assignment to 5Ð15 phases, translation 2Ð1 to pointer cast 5Ð10 placement to volatile assignment 5Ð15 of object, destructor and 12Ð6 to volatile casting 5Ð10 syntax, new 5Ð8 to volatile initialization 8Ð11 pm-expression 5Ð11 type 3Ð6 point type extension to C, void* 19Ð2 of declaration class name 9Ð3 versus array, overloading and 13Ð2 of declaration enumerator 3Ð2 zero 4Ð2, 4Ð3, 5Ð13 of declaration name 3Ð2 zero assignment to 5Ð15 of definition, enumerator 7Ð7 polymorphic pointer class 10Ð6 ± see also void* type 10Ð6 arithmetic 5Ð11, 5Ð12 postfix assignment, const 5Ð15 ++ and -- 5Ð5 assignment to 5Ð15 ++ and --, overloading 13Ð8 assignment, volatile 5Ð15 expression 5Ð3 cast, integer to 5Ð9 pragma directive 16Ð8 comparison 5Ð13 #pragma 16Ð8 comparison, implementation dependency 5Ð13 precedence of operator 5Ð1 comparison, undefined 5Ð12, 5Ð13 prefix comparison, void* 5Ð13 ++ and -- 5Ð7 conversion 4Ð2 ++ and --, overloading 13Ð8 conversion ambiguity 4Ð3 L 2Ð7, 2Ð8 conversion, array 4Ð3 preprocessing 16Ð1 conversion, base class 4Ð3 directive 16Ð1 conversion, const void* 4Ð3 syntax summary 18Ð11 conversion, const volatile void* 4Ð3 preprocessing-token 2Ð2 conversion, derived class 4Ð3 preprocessor, macro 16Ð1 conversion, null 4Ð3 primary expression 5Ð2 conversion, overloading resolution and 13Ð6 private 11Ð1 conversion, void* 4Ð3 base class 11Ð2 conversion, volatile const void* 4Ð3 program 3Ð3 conversion, volatile void* 4Ð3 environment 3Ð3 conversion, zero 4Ð3 start 3Ð3, 3Ð4 conversions, cv-qualifier 4Ð2 termination 3Ð3, 3Ð4 declaration 8Ð4 termination and destructor 12Ð5 declarator * 8Ð4 promotion example, constant 8Ð4 integral 4Ð1, 5Ð4 initialization, const 8Ð11 of wchar_t, implementation dependency 4Ð1 initialization, volatile 8Ð11 overloading resolution and 13Ð4 integer conversion, implementation dependency 5Ð9 protected 11Ð1 null 4Ð2, 4Ð3, 5Ð13 extension to C 19Ð2 overloading and 13Ð1 member access 11Ð7 subtraction, implementation dependency 5Ð12 protection ± see access control terminology 3Ð6 ptrdiff_t 5Ð12 to abstract class 10Ð9 implementation dependency type of 5Ð12 to bit-field restriction 9Ð10 ptr-operator 8Ð2 to const assignment 5Ð15 public 11Ð1 to const initialization 8Ð11 base class 11Ð2 to function cast 5Ð10 punctuators 2Ð4 to function cast, implementation dependency 5Ð10 pure to function comparison 5Ð13 specifier 9Ð3 DRAFT September 28, 1993 Index 17

virtual destructor 12Ð5 identifiers 17Ð9 virtual function 10Ð8, 10Ð9 word ± see keyword virtual function call, undefined 10Ð9, 12Ð11 resolution virtual function definition 10Ð8 overloading ± see overloading resolution virtual function example 10Ð8 scoping ambiguity 10Ð4 pure-specifier 9Ð3 template function overloading 14Ð3 restriction address of bit-field 9Ð10 Q alignment 5Ð10 anonymous union 9Ð9 qualified auto 7Ð2 id 5Ð2 bit-field 9Ð10 name, address of 5Ð6 constructor 12Ð1, 12Ð2 name, nested class 7Ð6 default assignment operator 12Ð12 qualified-class-specifier 7Ð6 default copy constructor 12Ð12 qualified-id 5Ð2 destructor 12Ð5 qualified-type-specifier 7Ð6 enumerator 7Ð7 question mark 2Ð7 extern 7Ð2 quote local class 9Ð12 double 2Ð7 member of class type 12Ð9 single 2Ð7 overloading 13Ð7 pointer to bit-field 9Ð10 reference 8Ð5 R register 7Ð2 range of types, implementation dependency 2Ð5 static 7Ð2 readonly memory, undefined 7Ð5 static member local class 9Ð8 recursive function call 5Ð4 union 9Ð9, 12Ð2 redefinition restrictions, operator overloading 13Ð7 enumerator 7Ð7 rethrow 15Ð2 typedef 7Ð4 return reference 3Ð6 type 8Ð7 and argument passing 8Ð13 type, class object 12Ð9 and return 8Ð13 type conversion 6Ð5 and temporary 8Ð13 type, overloading and 13Ð1 argument 5Ð3 return 6Ð5 assignment 8Ð13 constructor and 6Ð5 assignment to 5Ð15 from main() 3Ð4 call by 5Ð3 reference and 8Ð13 cast 5Ð10 statement ± see also return const 8Ð13 rewriting rules, inline member function 9Ð8 conversion 4Ð3 right shift operator 5Ð12 conversion ambiguity 4Ð3 Ritchie, Kernighan and 1Ð1 conversions, cv-qualifier 4Ð3 ROMable type 7Ð5 declaration 8Ð4 rounding 4Ð2 declaration, extern 8Ð13 rule, one-definition 3Ð2 declarator & 8Ð4 rules expression 5Ð2 for conditions 6Ð2 initialization 8Ð5, 8Ð13 inline member function rewriting 9Ð8 member initialization 12Ð10 overloading resolution 13Ð4 null 8Ð5 summary, scope 10Ð9 operand 5Ð1 type conversion 4Ð2 overloading and 13Ð1 run-time initialization 3Ð4 parameter 8Ð4 restriction 8Ð5 sizeof 5Ð7 S temporary, scope of 8Ð14 safe floating point conversion 4Ð2 to base class 4Ð3 s-char 2Ð8 type, extension to C 19Ð2 s-char-sequence Ð volatile Ð 2 8 8 14 Ð register scope 3 1 class 3Ð2 declaration 7Ð2 destructor and exit from 6Ð5 initialization 6Ð6 difference from C 19Ð1 restriction 7Ð2 file 3Ð2 relational operator 5Ð13 function 3Ð2 relational-expression 5Ð13 function prototype 3Ð2 remainder operator ± see modulus operator iteration-statement 6Ð4 replacement, macro 16Ð4 local 3Ð2 reraise 15Ð2 macro definition 16Ð6 rescanning and replacement 16Ð6 of class definition 9Ð2 reserved of class name 9Ð2 identifier 2Ð4 18 Index DRAFT September 28, 1993

of declaration in for 6Ð4 integral type, implementation dependency 3Ð5 of default parameter 8Ð9 operator 5Ð6, 5Ð7 of delete example 12Ð8 reference 5Ð7 of enumerator class 7Ð8 string 2Ð8 of friend 3Ð2 type, implementation dependency 3Ð5 of friend function 11Ð6 size_t 5Ð7 of function definition 3Ð3 implementation dependency type of 5Ð7 of label 3Ð2, 6Ð1 source of local class 9Ð11 file 2Ð1 of member initializer 12Ð11 file inclusion 16Ð3 of name 3Ð2 space, white 2Ð3 of nested class 9Ð10 special member function ± see also constructor, of nested class anachronism 19Ð14 destructor, inline function, user-defined conversion, of nested type name 9Ð12 virtual function of parameter 3Ð2 specifier of reference temporary 8Ð14 access ± see access specifier overloading and 13Ð2 auto 7Ð2 resolution operator 3Ð2, 5Ð2, 9Ð7, 10Ð1, 10Ð8 declaration 7Ð1 resolution operator example 10Ð4 friend 7Ð5 resolution operator use 9Ð8 function 7Ð3 rules summary 10Ð9 inline 7Ð3 selection-statement 6Ð2 missing storage class 7Ð2 scoping static 7Ð2 ambiguity resolution 10Ð4 storage class 7Ð2 and new 5Ð8 template 7Ð5 selection statement 6Ð2 type ± see type specifier selection-statement 6Ð2 typedef 7Ð4 scope 6Ð2 virtual 7Ð4 semantics, class member 5Ð4 stack unwinding 15Ð3 separate standard compilation 2Ð1 conversion 4Ð1 translation 2Ð1 conversion, overloaded function and 13Ð4 sequence, statement 6Ð1 conversion, overloading resolution and 13Ð4 sequencing operator ± see comma operator headers 2Ð5 setterminate() 15Ð5 start, program 3Ð3, 3Ð4 setunexpected() 15Ð5 statement 6Ð1 shift operator ± see left shift operator, right shift ± see also return, return operator break 6Ð5 shift-expression 5Ð12 compound 6Ð2 short continue 6Ð5 type 3Ð5 continue in for 6Ð4 type specifier 7Ð6 declaration 6Ð5 typedef and 7Ð2 declaration in for 6Ð4 side declaration in switch 6Ð3 effects 5Ð1 do 6Ð3, 6Ð4 effects and comma operator 5Ð16 empty 6Ð2 effects and logical AND operator 5Ð14 expression 6Ð2 effects and logical OR operator 5Ð14 extension to C declaration 19Ð2 sign for 6Ð3, 6Ð4 of bit-field, implementation dependency 9Ð10 goto 6Ð1, 6Ð5 of char, implementation dependency 3Ð5 if 6Ð2, 6Ð3 sign 2Ð8 iteration 6Ð3 signed jump 6Ð5 char type 3Ð5 labeled 6Ð1 character 3Ð5 null 6Ð2 typedef and 7Ð2 selection 6Ð2 unsigned, implementation dependency 4Ð1 sequence 6Ð1 unsigned integer conversion 4Ð1 switch 6Ð2, 6Ð3, 6Ð5 simple-escape-sequence 2Ð7 syntax summary 18Ð10 simple-type-specifier 7Ð5 while 6Ð3, 6Ð4 single {}, block 6Ð2 precision arithmetic, extension to C 19Ð2 statement 6Ð1 precision floating point arithmetic 4Ð2 static type 1Ð3 quote 2Ð7 static sizeof class member 3Ð4 array 5Ð7 destruction of local 6Ð6 class object 5Ð7 initialization, local 6Ð6 difference from C 19Ð1 linkage of 3Ð3, 7Ð2, 7Ð9 empty class 9Ð1 local object 3Ð4 expression, implementation dependency 5Ð7 member 9Ð8 expression, implementation dependency type of 2Ð5 member declaration 3Ð1 DRAFT September 28, 1993 Index 19

member definition 9Ð9 L 2Ð6, 2Ð8 member example 9Ð8 U 2Ð6 member function 9Ð6, 9Ð8 f 2Ð8 member initialization 9Ð9 l 2Ð6, 2Ð8 member, linkage of 3Ð3 u 2Ð6 member local class restriction 9Ð8 summary member, template and 14Ð6 class declaration syntax 18Ð9 member, type of 5Ð6, 9Ð9 compatibility with ANSI C 19Ð2 member use 9Ð8 compatibility with C 19Ð1 object, destructor 3Ð4 declaration syntax 18Ð6 object initialization 3Ð4, 8Ð10, 8Ð11 declarator syntax 18Ð8 objects order of execution, constructor and 12Ð9 exception handling syntax 18Ð12 objects order of execution, destructor and 12Ð9 expression syntax 18Ð1 overloading and 13Ð1 macro syntax 18Ð11 restriction 7Ð2 preprocessing syntax 18Ð11 specifier 7Ð2 scope rules 10Ð9 storage class 3Ð4 statement syntax 18Ð10 variable, template and 14Ð6 syntax 18Ð1 8Ð7 template syntax 18Ð12 __STDC__ 16Ð9 switch implementation dependency 16Ð9 statement 6Ð2, 6Ð3, 6Ð5 2Ð5, 2Ð7, 2Ð8, 5Ð7 statement, declaration in 6Ð3 2Ð5, 3Ð4 synonym, type name as 7Ð4 storage syntax allocation new 5Ð7 class member 5Ð4 class 3Ð1, 3Ð4 notation 1Ð1 class, auto 3Ð4 summary 18Ð1 class, class member 3Ð4 summary, class declaration 18Ð9 class declaration 7Ð2 summary, declaration 18Ð6 class, global object 3Ð4 summary, declarator 18Ð8 class, local object 3Ð4 summary, exception handling 18Ð12 class specifier 7Ð2 summary, expression 18Ð1 class specifier, missing 7Ð2 summary, macro 18Ð11 class, static 3Ð4 summary, preprocessing 18Ð11 management ± see new, delete summary, statement 18Ð10 of array 8Ð7 summary, template 18Ð12 string concatenation 2Ð8 constant 2Ð8 T definition 17Ð8 template 14Ð1 distinct 2Ð8 and friend 14Ð5 literal 2Ð8 and static member 14Ð6 literal concatenation, undefined 2Ð8 and static variable 14Ð6 literal, implementation dependency 2Ð8 class 14Ð2 literal, type of 2Ð8 class declaration 14Ð4 literal, undefined change to 2Ð8 class definition 14Ð4 sizeof 2Ð8 declaration 14Ð4 terminator 0 2Ð8 function 14Ð3 type of 2Ð8 function declaration 14Ð4 wide-character 2Ð8 function definition 14Ð4 string-literal 2Ð8 function overloading resolution 14Ð3 struct 3Ð6 linkage of 3Ð3 class versus 9Ð1 member function 14Ð5 default member access 9Ð1 syntax summary 18Ð12 initialization 8Ð11 type equivalence 14Ð3 type specifier 7Ð6 template 14Ð1 structure 3Ð6, 9Ð1 specifier 7Ð5 tag ± see class name template-argument 14Ð2 sub-object 1Ð2 template-argument-list 14Ð2 subscripting template-class-id 14Ð2 example 8Ð6 template-declaration 14Ð1 explanation 8Ð6 template-name 14Ð2 operator 5Ð3, 13Ð7 template-parameter 14Ð1 operator, overloaded 13Ð8 template-parameter-list 14Ð1 subsequence rule, overloading 13Ð3 temporary 12Ð2 subtraction and declarator initializer 12Ð3 implementation dependency pointer 5Ð12 and default parameter 12Ð3 operator 5Ð11 constructor for 12Ð2 suffix destruction of 12Ð3 E 2Ð8 destructor for 12Ð2 F 2Ð8 20 Index DRAFT September 28, 1993

elimination of 12Ð2 int, default 7Ð5 implementation dependency generation of 12Ð2 long 3Ð5 order of destruction of 12Ð3 long double 3Ð5 reference and 8Ð13 name 3Ð7, 8Ð2 scope of reference 8Ð14 name as synonym 7Ð4 terminate() 15Ð4, 15Ð5 name example 8Ð2 termination name example, nested 9Ð12 and destructor, program 12Ð5 name, nested 9Ð12 program 3Ð3, 3Ð4 name, scope of nested 9Ð12 terminator 0, string 2Ð8 of bit-field 9Ð10 terminology, pointer 3Ð6 of character literal 2Ð7 this 5Ð2 of constructor 12Ð2 anachronism, assignment to 19Ð13 of conversion 12Ð4 and constructor anachronism 19Ð13 of delete 12Ð7 and destructor anachronism 19Ð13 of enum 7Ð6, 7Ð7 pointer ± see this of floating point literal 2Ð8 type of 9Ð7 of integer literal 2Ð6 throw 15Ð1 of integer literal, implementation dependency 2Ð6 throw-expression in conditional-expression 5Ð14 of new 12Ð7 throw-expression 15Ð1 of ptrdiff_t, implementation dependency 5Ð12 throwing, exception 15Ð2 of size_t, implementation dependency 5Ð7 throw-point 15Ð1 of sizeof expression, implementation dependency token 2Ð3, 2Ð5 2Ð5 token 2Ð3 of static member 5Ð6, 9Ð9 translation of string 2Ð8 phases 2Ð1 of string literal 2Ð8 separate 2Ð1 of this 9Ð7 unit 2Ð2 pointer 3Ð6 unit, name and 3Ð1 polymorphic 10Ð6 translation@unit 2Ð1 short 3Ð5 trigraph 2Ð1, 2Ð2 signed char 3Ð5 trivial conversions, overloading resolution 13Ð4 specifier, char 7Ð6 truncation 4Ð2 specifier, class 7Ð6 try 15Ð1 specifier, double 7Ð6 try-block 15Ð1 specifier, enum 7Ð6 type 3Ð1 specifier, float 7Ð6 ROMable 7Ð5 specifier, int 7Ð6 ambiguity, declaration 7Ð1 specifier, long 7Ð6 arithmetic 3Ð5 specifier, missing 7Ð5 array 3Ð6 specifier, short 7Ð6 char 3Ð5 specifier, struct 7Ð6 checking, argument 5Ð3 specifier, union 7Ð6 checking, default parameter 8Ð9 specifier, unsigned 7Ð6 checking, extension to C 19Ð1 specifier, void 7Ð6 class and 9Ð1 specifier, volatile 7Ð5 const 7Ð5 static 1Ð3 conversion ± see also conversion unsigned 3Ð5 conversion, argument 12Ð3 unsigned char 3Ð5 conversion, explicit ± see casting void 3Ð6 conversion rules 4Ð2 void* 3Ð6 declaration 8Ð3 volatile 7Ð5 declaration consistency 3Ð3 wchar_t 3Ð5 declaration, typedef as 7Ð4 wchar_t underlying 3Ð5 definition, class name as 9Ð2 typedef 3Ð7 derived 3Ð6 and long 7Ð2 double 3Ð5 and short 7Ð2 dynamic 1Ð3 and signed 7Ð2 enumerated 3Ð5 and unsigned 7Ð2 enumeration underlying 7Ð7 as type declaration 7Ð4 equivalence 7Ð4, 9Ð2 class name 7Ð4, 7Ð5, 9Ð3 equivalence, template 14Ð3 declaration 3Ð1 example, incomplete 3Ð5 example 7Ð4 extension to C reference 19Ð2 linkage of 3Ð3 extension to C user-defined 19Ð2 overloading and 13Ð2 float 3Ð5 redefinition 7Ð4 function 3Ð6, 8Ð7 specifier 7Ð4 fundamental 3Ð5 typedef-name 7Ð4 generator ± see template typeid 5Ð6 implementation dependency sizeof 3Ð5 type-id 8Ð2 incomplete 3Ð4 type-id-list 15Ð4 int 3Ð5 Typeinfo 17Ð5 DRAFT September 28, 1993 Index 21

type-parameter 14Ð1 arithmetic 3Ð5 types char type 3Ð5 floating ± see floating point type constant 2Ð6 implementation dependency range of 2Ð5 implementation dependency signed 4Ð1 integral ± see integral type integer conversion, signed 4Ð1 type-specifier 7Ð5 literal 2Ð6 type 3Ð5 type specifier 7Ð6 U typedef and 7Ð2 unsigned-suffix 2Ð6 U suffix 2Ð6 unspecified u suffix 2Ð6 argument to constructor 5Ð8 unary destructor call 6Ð6 expression 5Ð6 expression 5Ð4 minus operator 5Ð6, 5Ð7 order of argument evaluation 5Ð4 operator 5Ð6 order of evaluation 5Ð1 operator, interpretation of 13Ð7 order of evaluation new 5Ð8 operator, overloaded 13Ð7 order of function call evaluation 5Ð4 plus operator 5Ð6 value new 5Ð8 unary-expression 5Ð6 unwinding, stack 15Ð3 unary-operator 5Ð6 user-defined #undef 16Ð6 conversion 5Ð2, 12Ð3, 12Ð4 undefined conversion and name hiding 12Ð5 bound pointer to member function 19Ð13 conversion, implicit 12Ð4 change to const object 7Ð5 conversion, inheritance of 12Ð4 change to string literal 2Ð8 conversion, overloading resolution and 13Ð4, 13Ð5 class, cast to 5Ð10 conversion, virtual 12Ð4 conversion out of range value 4Ð2 type, extension to C 19Ð2 delete 5Ð9 deleted object 5Ð9 division by zero 5Ð1, 5Ð11 escape sequence 2Ð7 V function call 5Ð10 value left shift 5Ð12 call by 5Ð3 member function call 9Ð7 delete, undefined 5Ð9 pointer comparison 5Ð12, 5Ð13 new, unspecified 5Ð8 pure virtual function call 10Ð9, 12Ð11 of char literal, implementation dependency 2Ð7 readonly memory 7Ð5 of enumerator 7Ð7 string literal concatenation 2Ð8 of multicharacter literal, implementation dependency unrepresentable integral value 4Ð2 2Ð7 value delete 5Ð9 undefined conversion out of range 4Ð2 underlying undefined unrepresentable integral 4Ð2 type, enumeration 7Ð7 variable type, wchar_t 3Ð5 argument list 8Ð7 underscore indeterminate uninitialized 8Ð11 character _ 2Ð4 parameter list 5Ð4, 8Ð7 in identifier _ 2Ð4 parameter list example 8Ð8 unexpected() 15Ð5 template and static 14Ð6 uninitialized variable, indeterminate 8Ð11 vertical tab 2Ð7 union 3Ð6, 9Ð9 virtual access control, anonymous 9Ð9 base class 10Ð3 anonymous 9Ð9 base class DAG 10Ð3 class versus 9Ð1 base class dominance 10Ð5 constructor 9Ð9 base class initialization 12Ð10, 12Ð12 default member access 9Ð1 base class initialization, order of 12Ð10 destructor 9Ð9 destructor 12Ð5 extension to C anonymous 19Ð2 destructor, pure 12Ð5 global anonymous 9Ð9 function 10Ð6 initialization 8Ð12, 9Ð9 function access 11Ð7 member function 9Ð9 function call 10Ð8 restriction 9Ð9, 12Ð2 function call, constructor and 12Ð11 restriction, anonymous 9Ð9 function call, destructor and 12Ð11 type specifier 7Ð6 function call, undefined pure 10Ð9, 12Ð11 unknown argument type 8Ð7 function definition 10Ð7 unnamed function definition, pure 10Ð8 bit-field 9Ð10 function example 10Ð6, 10Ð7 class 7Ð5 function example, pure 10Ð8 object 12Ð2 function, pure 10Ð8, 10Ð9 parameter example 8Ð10 user-defined conversion 12Ð4 unrepresentable integral value, undefined 4Ð2 virtual unsigned and friend 10Ð7 22 Index DRAFT September 28, 1993

and multiple inheritance 10Ð7 specifier 7Ð4 void parameter 8Ð7 type 3Ð6 type specifier 7Ð6 void& 8Ð4 void* conversion, pointer to member 4Ð4 pointer comparison 5Ð13 pointer conversion 4Ð3 pointer type extension to C 19Ð2 type 3Ð6 volatile 3Ð6 assignment, pointer to 5Ð15 casting, pointer to 5Ð10 const void* pointer conversion 4Ð3 constructor and 9Ð8, 12Ð1 destructor and 9Ð8, 12Ð5 extension to C 19Ð2 implementation dependency 7Ð5 initialization, pointer to 8Ð11 member function 9Ð7 operand 5Ð1 overloading and 13Ð1 pointer assignment 5Ð15 pointer initialization 8Ð11 reference 8Ð14 type 7Ð5 type specifier 7Ð5 void* pointer conversion 4Ð3 W wchar_t 2Ð7, 2Ð8 implementation dependency 3Ð5 implementation dependency promotion of 4Ð1 type 3Ð5 underlying type 3Ð5 while statement 6Ð3, 6Ð4 white space 2Ð3 space 2Ð3 wide-character 2Ð7 string 2Ð8 X X(X&) ± see copy constructor Z zero assignment to pointer 5Ð15 assignment to pointer to member 5Ð15 pointer 4Ð2, 4Ð3, 5Ð13 pointer conversion 4Ð3 undefined division by 5Ð1, 5Ð11 width of bit-field 9Ð10