《(标准规范)ISO-IEC-14882-2011-(C++11).pdf》由会员分享,可在线阅读,更多相关《(标准规范)ISO-IEC-14882-2011-(C++11).pdf(1356页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 Reference numberISO/IEC 14882:2011(E)ISO/IEC 2011 INTERNATIONAL STANDARD ISO/IEC14882Third edition2011-09-01Information technology Programming languages C+Technologies de linformation Langages de programmation C+第 1 页 共 1356 页ISO/IEC 14882:2011(E)COPYRIGHT PROTECTED DOCUMENT ISO/IEC 2011 All rights
2、 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 either ISO at the address below or ISOs member body in the country of the reques
3、ter.ISO copyright office Case postale 56 CH-1211 Geneva 20 Tel.+41 22 749 01 11 Fax +41 22 749 09 47 E-mail copyrightiso.org Web www.iso.org Published in Switzerland ii ISO/IEC 2011 All rights reserved 第 2 页 共 1356 页ContentsContentsiiiList of TablesxiList of Figuresxv1General11.1Scope.11.2Normative
4、references.11.3Terms and definitions.21.4Implementation compliance.51.5Structure of this International Standard.61.6Syntax notation.61.7The C+memory model.71.8The C+object model.71.9Program execution.81.10Multi-threaded executions and data races.121.11Acknowledgments.162Lexical conventions172.1Separ
5、ate translation.172.2Phases of translation.172.3Character sets.182.4Trigraph sequences.192.5Preprocessing tokens.202.6Alternative tokens.212.7Tokens.212.8Comments.212.9Header names.222.10Preprocessing numbers.222.11Identifiers.222.12Keywords.232.13Operators and punctuators.242.14Literals.243Basic co
6、ncepts343.1Declarations and definitions.343.2One definition rule.363.3Scope.383.4Name lookup.453.5Program and linkage.593.6Start and termination.623.7Storage duration.653.8Object lifetime.693.9Types.723.10Lvalues and rvalues.78ContentsiiiISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 3 页 共 1
7、356 页3.11Alignment.804Standard conversions814.1Lvalue-to-rvalue conversion.824.2Array-to-pointer conversion.824.3Function-to-pointer conversion.824.4Qualification conversions.824.5Integral promotions.834.6Floating point promotion.844.7Integral conversions.844.8Floating point conversions.844.9Floatin
8、g-integral conversions.854.10Pointer conversions.854.11Pointer to member conversions.854.12Boolean conversions.864.13Integer conversion rank.865Expressions875.1Primary expressions.895.2Postfix expressions.975.3Unary expressions.1095.4Explicit type conversion(cast notation).1175.5Pointer-to-member op
9、erators.1185.6Multiplicative operators.1195.7Additive operators.1195.8Shift operators.1215.9Relational operators.1215.10Equality operators.1225.11Bitwise AND operator.1235.12Bitwise exclusive OR operator.1235.13Bitwise inclusive OR operator.1235.14Logical AND operator.1235.15Logical OR operator.1245
10、.16Conditional operator.1245.17Assignment and compound assignment operators.1255.18Comma operator.1275.19Constant expressions.1276Statements1306.1Labeled statement.1306.2Expression statement.1306.3Compound statement or block.1306.4Selection statements.1316.5Iteration statements.1336.6Jump statements
11、.1366.7Declaration statement.1376.8Ambiguity resolution.1387Declarations1407.1Specifiers.1427.2Enumeration declarations.157ContentsivISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 4 页 共 1356 页7.3Namespaces.1617.4The asm declaration.1737.5Linkage specifications.1747.6Attributes.1778Declarator
12、s1828.1Type names.1838.2Ambiguity resolution.1848.3Meaning of declarators.1868.4Function definitions.1988.5Initializers.2029Classes2169.1Class names.2189.2Class members.2209.3Member functions.2229.4Static members.2259.5Unions.2279.6Bit-fields.2299.7Nested class declarations.2299.8Local class declara
13、tions.2319.9Nested type names.23110 Derived classes23310.1Multiple base classes.23410.2Member name lookup.23610.3Virtual functions.24010.4Abstract classes.24411 Member access control24611.1Access specifiers.24811.2Accessibility of base classes and base class members.24911.3Friends.25111.4Protected m
14、ember access.25411.5Access to virtual functions.25511.6Multiple access.25611.7Nested classes.25612 Special member functions25712.1Constructors.25712.2Temporary objects.26012.3Conversions.26212.4Destructors.26512.5Free store.26712.6Initialization.26912.7Construction and destruction.27512.8Copying and
15、 moving class objects.27812.9Inheriting constructors.28613 Overloading28913.1Overloadable declarations.289ContentsvISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 5 页 共 1356 页13.2Declaration matching.29113.3Overload resolution.29213.4Address of overloaded function.31113.5Overloaded operators.
16、31313.6Built-in operators.31714 Templates32114.1Template parameters.32214.2Names of template specializations.32514.3Template arguments.32714.4Type equivalence.33314.5Template declarations.33414.6Name resolution.35214.7Template instantiation and specialization.36614.8Function template specializations
17、.37815 Exception handling40015.1Throwing an exception.40115.2Constructors and destructors.40315.3Handling an exception.40315.4Exception specifications.40515.5Special functions.40916 Preprocessing directives41116.1Conditional inclusion.41316.2Source file inclusion.41416.3Macro replacement.41516.4Line
18、 control.42016.5Error directive.42116.6Pragma directive.42116.7Null directive.42116.8Predefined macro names.42116.9Pragma operator.42317 Library introduction42417.1General.42417.2The C standard library.42517.3Definitions.42517.4Additional definitions.42817.5Method of description(Informative).42817.6
19、Library-wide requirements.43418 Language support library45418.1General.45418.2Types.45418.3Implementation properties.45518.4Integer types.46418.5Start and termination.46518.6Dynamic memory management.46718.7Type identification.47318.8Exception handling.475ContentsviISO/IEC 14882:2011(E)ISO/IEC 2011
20、All rights reserved第 6 页 共 1356 页18.9Initializer lists.48018.10 Other runtime support.48119 Diagnostics library48419.1General.48419.2Exception classes.48419.3Assertions.48819.4Error numbers.48919.5System error support.48920 General utilities library50020.1General.50020.2Utility components.50020.3Pai
21、rs.50420.4Tuples.50820.5Class template bitset.51820.6Memory.52520.7Smart pointers.54020.8Function objects.56620.9Metaprogramming and type traits.58520.10 Compile-time rational arithmetic.60220.11 Time utilities.60520.12 Class template scoped_allocator_adaptor.62020.13 Class type_index.62521 Strings
22、library62821.1General.62821.2Character traits.62821.3String classes.63421.4Class template basic_string.63821.5Numeric conversions.66521.6Hash support.66621.7Null-terminated sequence utilities.66722 Localization library67122.1General.67122.2Header synopsis.67122.3Locales.67222.4Standard locale catego
23、ries.68422.5Standard code conversion facets.72522.6C library locales.72623 Containers library72823.1General.72823.2Container requirements.72823.3Sequence containers.75423.4Associative containers.78623.5Unordered associative containers.80323.6Container adaptors.81924 Iterators library829ContentsviiIS
24、O/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 7 页 共 1356 页24.1General.82924.2Iterator requirements.82924.3Header synopsis.83424.4Iterator primitives.83724.5Iterator adaptors.84124.6Stream iterators.85525 Algorithms library86325.1General.86325.2Non-modifying sequence operations.87325.3Mutating
25、 sequence operations.87825.4Sorting and related operations.88725.5C library algorithms.90026 Numerics library90226.1General.90226.2Numeric type requirements.90226.3The floating-point environment.90326.4Complex numbers.90426.5Random number generation.91426.6Numeric arrays.95926.7Generalized numeric o
26、perations.98126.8C library.98427 Input/output library98927.1General.98927.2Iostreams requirements.99027.3Forward declarations.99027.4Standard iostream objects.99227.5Iostreams base classes.99427.6Stream buffers.101327.7Formatting and manipulators.102327.8String-based streams.104927.9File-based strea
27、ms.106128 Regular expressions library107628.1General.107628.2Definitions.107628.3Requirements.107728.4Header synopsis.107928.5Namespace std:regex_constants.108628.6Class regex_error.108928.7Class template regex_traits.108928.8Class template basic_regex.109228.9Class template sub_match.109728.10 Clas
28、s template match_results.110328.11 Regular expression algorithms.110828.12 Regular expression iterators.111328.13 Modified ECMAScript regular expression grammar.111929 Atomic operations library1122ContentsviiiISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 8 页 共 1356 页29.1General.112229.2Head
29、er synopsis.112229.3Order and consistency.112529.4Lock-free property.112829.5Atomic types.112829.6Operations on atomic types.113229.7Flag type and operations.113729.8Fences.113830 Thread support library114030.1General.114030.2Requirements.114030.3Threads.114330.4Mutual exclusion.114930.5Condition va
30、riables.116230.6Futures.1170A Grammar summary1187A.1Keywords.1187A.2Lexical conventions.1187A.3Basic concepts.1192A.4Expressions.1192A.5Statements.1195A.6Declarations.1196A.7Declarators.1200A.8Classes.1202A.9Derived classes.1203A.10Special member functions.1203A.11Overloading.1204A.12Templates.1204A
31、.13Exception handling.1205A.14Preprocessing directives.1205B Implementation quantities1207C Compatibility1209C.1C+and ISO C.1209C.2C+and ISO C+2003.1218C.3C standard library.1225D Compatibility features1229D.1Increment operator with bool operand.1229D.2register keyword.1229D.3Implicit declaration of
32、 copy functions.1229D.4Dynamic exception specifications.1229D.5C standard library headers.1229D.6Old iostreams members.1230D.7char*streams.1231D.8Function objects.1240D.9Binders.1243D.10auto_ptr.1245ContentsixISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 9 页 共 1356 页D.11Violating exception-
33、specifications.1247E Universal character names for identifier characters1249E.1Ranges of characters allowed.1249E.2Ranges of characters disallowed initially.1249F Cross references1250Index1268Index of grammar productions1297Index of library names1300Index of implementation-defined behavior1336Conten
34、tsxISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 10 页 共 1356 页List of Tables1Trigraph sequences.192Alternative tokens.213Identifiers with special meaning.234Keywords.235Alternative representations.246Types of integer constants.257Escape sequences.278String literal concatenations.309Relation
35、s on const and volatile.7810simple-type-specifiers and the types they specify.15411Relationship between operator and function call notation.29712Conversions.30513Library categories.42414C+library headers.43515C+headers for C library facilities.43516C+headers for freestanding implementations.43617Equ
36、alityComparable requirements.43718LessThanComparable requirements.43719DefaultConstructible requirements.43720MoveConstructible requirements.43821CopyConstructible requirements(in addition to MoveConstructible).43822MoveAssignable requirements.43823CopyAssignable requirements(in addition to MoveAssi
37、gnable).43824Destructible requirements.43825NullablePointer requirements.44026Hash requirements.44127Descriptive variable definitions.44128Allocator requirements.44229Language support library summary.45430Header synopsis.45431Header synopsis.46432Header synopsis.46433Header synopsis.46634Header syno
38、psis.48235Header synopsis.48236Header synopsis.48237Header synopsis.48238Header synopsis.48239Header synopsis.48240Header synopsis.483List of TablesxiISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 11 页 共 1356 页41Diagnostics library summary.48442Header synopsis.48843Header synopsis.48944Gener
39、al utilities library summary.50045Header synopsis.53946Header synopsis.54047Primary type category predicates.58948Composite type category predicates.58949Type property predicates.59050Type property queries.59551Type relationship predicates.59652Const-volatile modifications.59753Reference modificatio
40、ns.59854Sign modifications.59855Array modifications.59956Pointer modifications.59957Other transformations.60058Expressions used to perform ratio arithmetic.60459Clock requirements.60860Header synopsis.61961Strings library summary.62862Character traits requirements.62963basic_string(const Allocator&)
41、effects.64364basic_string(const basic_string&)effects.64365basic_string(const basic_string&,size_type,size_type,const Allocator&)effects.64366basic_string(const charT*,size_type,const Allocator&)effects.64467basic_string(const charT*,const Allocator&)effects.64468basic_string(size_t,charT,const Allo
42、cator&)effects.64469basic_string(const basic_string&,const Allocator&)and basic_string(basic_string&,const Allocator&)effects.64570operator=(const basic_string&)effects.64571operator=(const basic_string&)effects.64572compare()results.65973Potential mbstate_t data races.66874Header synopsis.66875Head
43、er synopsis.66976Header synopsis.66977Header synopsis.66978Header synopsis.66979Header synopsis.67080Localization library summary.67181Locale category facets.67582Required specializations.67683do_in/do_out result values.69484do_unshift result values.69485Integer conversions.69886Length modifier.6988
44、7Integer conversions.702List of TablesxiiISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 12 页 共 1356 页88Floating-point conversions.70389Length modifier.70390Numeric conversions.70391Fill padding.70492do_get_date effects.71193Header synopsis.72694Potential setlocale data races.72795Containers
45、library summary.72896Container requirements.72997Reversible container requirements.73198Optional container operations.73299Allocator-aware container requirements.733100 Sequence container requirements(in addition to container).735101 Optional sequence container operations.737102 Associative containe
46、r requirements(in addition to container).740103 Unordered associative container requirements(in addition to container).746104 Iterators library summary.829105 Relations among iterator categories.829106 Iterator requirements.831107 Input iterator requirements(in addition to Iterator).831108 Output it
47、erator requirements(in addition to Iterator).832109 Forward iterator requirements(in addition to input iterator).833110 Bidirectional iterator requirements(in addition to forward iterator).833111 Random access iterator requirements(in addition to bidirectional iterator).834112 Algorithms library sum
48、mary.863113 Header synopsis.900114 Numerics library summary.902115 Seed sequence requirements.915116 Uniform random number generator requirements.916117 Random number engine requirements.917118 Random number distribution requirements.921119 Header synopsis.984120 Header synopsis.985121 Input/output
49、library summary.989122 fmtflags effects.999123 fmtflags constants.999124 iostate effects.999125 openmode effects.1000126 seekdir effects.1000127 Position type requirements.1004128 basic_ios:init()effects.1007129 basic_ios:copyfmt()effects.1008130 seekoff positioning.1054131 newoff values.1054132 Fil
50、e open modes.1064133 seekoff effects.1067List of TablesxiiiISO/IEC 14882:2011(E)ISO/IEC 2011 All rights reserved第 13 页 共 1356 页134 Header synopsis.1074135 Header synopsis.1075136 Regular expressions library summary.1076137 Regular expression traits class requirements.1077138 syntax_option_type effec