ISO/IEC 14882:1998
(Main)Programming languages — C++
Programming languages — C++
Langages de programmation — C++
General Information
Relations
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 14882
First edition
1998-09-01
Programming languages — C++
Langages de programmation — C++
Reference number
B C
ISO/IEC 14882:1998(E)
---------------------- Page: 1 ----------------------
ISO/IEC 14882:1998(E)
Contents
1 General . 1
1.1 Scope. 1
1.2 Normative references . 1
1.3 Definitions. 1
1.3.1 argument. 1
1.3.2 diagnostic message. 2
1.3.3 dynamic type . 2
1.3.4 ill-formed program . 2
1.3.5 implementation-defined behavior. 2
1.3.6 implementation limits. 2
1.3.7 locale-specific behavior. 2
1.3.8 multibyte character. 2
1.3.9 parameter. 2
1.3.10 signature . 2
1.3.11 static type. 2
1.3.12 undefined behavior. 2
1.3.13 unspecificed behavior. 3
1.3.14 well-formed program. 3
1.4 Implementation compliance . 3
1.5 Structure of this International Standard. 4
1.6 Syntax notation. 4
1.7 The C++ memory model . 4
1.8 The C++ object model.
1.9 Program execution. 5
© ISO/IEC 1998
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any
means, electronic or mechanical, including photocopying and microfilm, without permission in writing from the publisher.
ISO/IEC Copyright Office • Case postale 56 • CH-1211 Genève 20 • Switzerland
Printed in Switzerland
ii
---------------------- Page: 2 ----------------------
© ISO/IEC ISO/IEC 14882:1998(E)
1.10 Acknowledgments .8
2 Lexical conventions .9
2.1 Phases of translation .9
2.2 Character sets .10
2.3 Trigraph sequences .11
2.4 Preprocessing tokens .11
2.5 Alternative tokens .12
2.6 Tokens.12
2.7 Comments .12
2.8 Header names .13
2.9 Preprocessing numbers .13
2.10 Identifiers .13
2.11 Keywords .14
2.12 Operators and punctuators .15
2.13 Literals .15
2.13.1 Integer literals .15
2.13.2 Character literals .16
2.13.3 Floating literals .18
2.13.4 String literals .19
2.13.5 Boolean literals .19
3 Basic concepts .21
3.1 Declarations and definitions .21
3.2 One definition rule .22
3.3 Declarative regions and scopes .24
3.3.1 Point of declaration .25
3.3.2 Local scope .26
3.3.3 Function prototype scope .26
3.3.4 Function scope .27
3.3.5 Namespace scope .27
3.3.6 Class scope.27
3.3.7 Name hiding.28
3.4 Name lookup .29
3.4.1 Unqualified name lookup .29
3.4.2 Argument-dependent name lookup .32
3.4.3 Qualified name lookup .33
iii
---------------------- Page: 3 ----------------------
ISO/IEC 14882:1998(E) © ISO/IEC
3.4.3.1 Class members .35
3.4.3.2 Namespace members .35
3.4.4 Elaborated type specifiers .38
3.4.5 Class member access .39
3.4.6 Using-directives and namespace aliases .40
3.5 Program and linkage .41
3.6 Start and termination.43
3.6.1 Main function.43
3.6.2 Initialization of non-local objects .44
3.6.3 Termination.45
3.7 Storage duration .45
3.7.1 Static storage duration .46
3.7.2 Automatic storage duration.46
3.7.3 Dynamic storage duration .46
3.7.3.1 Allocation functions.47
3.7.3.2 Deallocation functions .47
3.7.4 Duration of sub-objects.48
3.8 Object Lifetime .48
3.9 Types.51
3.9.1 Fundamental types .53
3.9.2 Compound types .54
3.9.3 CV-qualifiers .55
3.10 Lvalues and rvalues .55
4 Standard conversions .57
4.1 Lvalue-to-rvalue conversion .57
4.2 Array-to-pointer conversion .58
4.3 Function-to-pointer conversion .58
4.4 Qualification conversions .58
4.5 Integral promotions .59
4.6 Floating point promotion .59
4.7 Integral conversions .60
4.8 Floating point conversions .60
4.9 Floating-integral conversions .60
4.10 Pointer conversions .60
4.11 Pointer to member conversions .61
iv
---------------------- Page: 4 ----------------------
© ISO/IEC ISO/IEC 14882:1998(E)
4.12 Boolean conversions .61
5 Expressions .63
5.1 Primary expressions .64
5.2 Postfix expressions .66
5.2.1 Subscripting .66
5.2.2 Function call .66
5.2.3 Explicit type conversion (functional notation) .68
5.2.4 Pseudo destructor call .68
5.2.5 Class member access .68
5.2.6 Increment and decrement .69
5.2.7 Dynamic cast .70
5.2.8 Type identification .71
5.2.9 Static cast .72
5.2.10 Reinterpret cast .73
5.2.11 Const cast .74
5.3 Unary expressions .76
5.3.1 Unary operators.76
5.3.2 Increment and decrement .77
5.3.3 Sizeof .77
5.3.4 New .78
5.3.5 Delete .81
5.4 Explicit type conversion (cast notation) .82
5.5 Pointer-to-member operators .83
5.6 Multiplicative operators .83
5.7 Additive operators .84
5.8 Shift operators .85
5.9 Relational operators .85
5.10 Equality operators .86
5.11 BitwiseAND operator .87
5.12 Bitwise exclusiveOR operator .87
5.13 Bitwise inclusiveOR operator .87
5.14 LogicalAND operator .87
5.15 LogicalOR operator .88
5.16 Conditional operator .88
5.17 Assignment operators .89
v
---------------------- Page: 5 ----------------------
ISO/IEC 14882:1998(E) © ISO/IEC
5.18 Comma operator .90
5.19 Constant expressions .90
6 Statements .93
6.1 Labeled statement .93
6.2 Expression statement .93
6.3 Compound statement or block .93
6.4 Selection statements.94
6.4.1 Theif statement .95
6.4.2 Theswitch statement .95
6.5 Iteration statements .95
6.5.1 Thewhile statement .96
6.5.2 Thedo statement .96
6.5.3 Theforstatement.97
6.6 Jump statements .97
6.6.1 Thebreak statement .97
6.6.2 Thecontinuestatement.98
6.6.3 Thereturn statement .98
6.6.4 Thegoto statement .98
6.7 Declaration statement .98
6.8 Ambiguity resolution .99
7 Declarations .101
7.1 Specifiers .102
7.1.1 Storage class specifiers .103
7.1.2 Function specifiers .104
7.1.3 Thetypedefspecifier.105
7.1.4 Thefriend specifier .106
7.1.5 Type specifiers .106
7.1.5.1 Thecv-qualifiers.107
7.1.5.2 Simple type specifiers .108
7.1.5.3 Elaborated type specifiers .109
7.2 Enumeration declarations .110
7.3 Namespaces .112
7.3.1 Namespace definition .112
7.3.1.1 Unnamed namespaces .113
7.3.1.2 Namespace member definitions .113
7.3.2 Namespace alias .115
7.3.3 Theusing declaration .115
7.3.4 Using directive .120
7.4 Theasm declaration .123
vi
---------------------- Page: 6 ----------------------
© ISO/IEC ISO/IEC 14882:1998(E)
7.5 Linkage specifications .123
8 Declarators .127
8.1 Type names .128
8.2 Ambiguity resolution .128
8.3 Meaning of declarators .130
8.3.1 Pointers .131
8.3.2 References .132
8.3.3 Pointers to members .133
8.3.4 Arrays .133
8.3.5 Functions.135
8.3.6 Default arguments .137
8.4 Function definitions .140
8.5 Initializers .141
8.5.1 Aggregates .144
8.5.2 Character arrays .146
8.5.3 References .147
9 Classes .149
9.1 Class names .149
9.2 Class members .151
9.3 Member functions .153
9.3.1 Nonsta
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.