C++ Standard Core Language Issue Index by Section, Revision 30

This document contains a summary listing of all the C++ Core Language issues arranged in the order of the sections of the Standard with which they deal most directly. It is part of a group of related documents that together describe the issues that have been raised regarding the C++ Standard. The other documents in the group are:

For more information, including a description of the meaning of the issue status codes and instructions on reporting new issues, please see the Active Issues List.

Index by Section

1.3449NAD Consistency in use of hyphen with names of "non" entities
1.3.10357open Definition of signature should include name
1.9129open Stability of uninitialized auto variables
2.1362WP Order of initialization in instantiation units
2.2173TC1 Constraints on execution character set
2.4369open Are new/delete identifiers or preprocessing-op-or-punc?
2.12189drafting Definition of operator and punctuator
2.13.4411open Use of universal-character-name in character versus string literals
3309open Linkage of entities whose names are not simply identifiers, in introduction
3.250NAD Converting pointer to incomplete type to same type
3.282dup Definition of "using" a constant expression
3.2261WP When is a deallocation function "used?"
3.2289WP Incomplete list of contexts requiring a complete type
3.3.1433WP Do elaborated type specifiers in templates inject into enclosing namespace scope?
3.3.642NAD Redefining names from base classes
3.3.6432WP Is injected class name visible in base class specifier list?
3.4.141TC1 Clarification of lookup of names after declarator-id
3.4.1139WP Error in friend lookup example
3.4.1191open Name lookup does not handle complex nesting
3.4.1192open Name lookup in parameters
3.4.1231NAD Visibility of names after using-directives
3.4.1405open Unqualified function name lookup
3.4.212dup Default arguments on different declarations for the same function and the Koenig lookup
3.4.233TC1 Argument dependent lookup and overloaded functions
3.4.290TC1 Should the enclosing class be an "associated class" too?
3.4.291NAD A union's associated types should include the union itself
3.4.2143WP Friends and Koenig lookup
3.4.2164TC1 Overlap between Koenig and normal lookup
3.4.2218drafting Specification of Koenig lookup
3.4.2225drafting Koenig lookup and fundamental types
3.4.2321open Associated classes and namespaces for argument-dependent lookup
3.4.2384NAD Argument-dependent lookup and operator functions
3.4.2403WP Reference to a type as a template-id T::x when T is cv-qualified struct A::A should not name the constructor of A Using-declarations and the "struct hack"
3.4.485TC1 Redeclaration of member class
3.4.4245WP Name lookup in elaborated-type-specifiers
3.4.4254WP Definitional problems with elaborated-type-specifiers
3.4.5141open Non-member function templates in member access expressions
3.4.5156drafting Name lookup for conversion functions
3.4.5305drafting Name lookup in destructor call
3.4.5381ready Incorrect example of base class member lookup
3.4.5414drafting Multiple types found on destructor lookup
3.4.6373open Lookup on namespace qualified name in using-directive
3.5132NAD Local types and linkage
3.5216WP Linkage of nameless class-scope enumeration types
3.5278open External linkage and nameless entities
3.5279open Correspondence of "names for linkage purposes"
3.5319ready Use of names without linkage in declaring entities with linkage
3.5338open Enumerator name with linkage used as class name in other translation unit
3.5389ready Unnamed types in entities with linkage
3.5426drafting Identically-named variables, one internally and one externally linked, allowed?
3.6.2269NAD Order of initialization of multiply-defined static data members of class templates
3.6.2270WP Order of initialization of static data members of class templates
3.6.2371open Interleaving of constructor calls
3.6.2441review Ordering of static reference initialization
3.6.2465open May constructors of global objects call exit()?
3.6.328open 'exit', 'signal' and static object destruction
3.7365open Storage duration and temporaries All deallocation functions should be required not to throw "use" of invalid pointer value not defined delete and user-written deallocation functions
3.889TC1 Object lifetime does not account for reference rebinding
3.893TC1 Missing word in 3.8 basic.life paragraph 2
3.8119WP Object lifetime and aggregate initialization
3.8234NAD Reuse of base class subobjects
3.8274WP Cv-qualification and char-alias access to out-of-lifetime objects
3.8404WP Unclear reference to construction with non-trivial constructor
3.8419open Can cast to virtual base class be done on partially-constructed object?
3.943TC1 Copying base classes (PODs) using memcpy
3.9290open Should memcpy be allowed into a POD with a const member?
3.9350review signed char underlying representation for objects
3.9.1146open Floating-point zero
3.9.1251open How many signed integer types are there?
3.10158WP Aliasing and qualification conversions
4.1240open Uninitialized values and undefined behavior
4.4330open Qualification conversions and pointers to arrays of pointers
4.5303NAD Integral promotions on bit-fields
4.10149TC1 Accessibility and ambiguity
4.10456NAD Is initialized const int or const bool variable a null pointer constant?
4.11170drafting Pointer-to-member conversions
571NAD Incorrect cross reference
5222drafting Sequence points and lvalue-returning operators
5238open Precision and accuracy constraints on floating point
5351WP Sequence point error: unspecified or undefined?
5438open Possible flaw in wording for multiple accesses to object between sequence points
5451NAD Expressions with invalid results and ill-formedness
5.1122WP template-ids as unqualified-ids
5.1123TC1 Bad cross-reference
5.1125WP Ambiguity in friend declaration syntax
5.1147TC1 Naming the constructor
5.2.2113WP Visibility of called function
5.2.2118open Calls via pointers to virtual member functions
5.2.4466open cv-qualifiers on pseudo-destructor type
5.2.552TC1 Non-static members, member selection and access checking
5.2.5421WP Is rvalue.field an rvalue?
5.2.8282open Namespace for extended_type_info
5.2.953TC1 Lvalue-to-rvalue conversion before certain static_casts
5.2.954ready Static_cast from private base to derived class
5.2.9128TC1 Casting between enum types
5.2.9137TC1 static_cast of cv void*
5.2.9294extension Can static_cast drop exception specifications?
5.2.9427ready static_cast ambiguity: conversion versus cast to derived
5.2.9439review Guarantees on casting pointer back to cv-qualified version of original type
5.2.10195drafting Converting between function and object pointers
5.2.10463open reinterpret_cast<T*>(0)
5.3342open Terminology: "indirection" versus "dereference"
5.3.1203open Type of address-of-member expression
5.3.1232drafting Is indirection through a null pointer undefined behavior?
5.3.1324WP Can "&" be applied to assignment to bit-field?
5.3.431NAD Looking up new/delete
5.3.474TC1 Enumeration value in direct-new-declarator
5.3.4127TC1 Ambiguity in description of matching deallocation function
5.3.4130NAD Sequence points and new-expressions
5.3.4256extension Overflow in size calculations
5.3.4267open Alignment requirement for new-expressions
5.3.4292open Deallocation on exception in new before arguments evaluated
5.3.4299open Conversion on array bound expression in new
5.3.4313open Class with single conversion function to integral as array size in new
5.3.4429ready Matching deallocation function chosen based on syntax or signature?
5.3.5196open Arguments to deallocation functions
5.3.5265open Destructors, exceptions, and deallocation
5.3.5288open Misuse of "static type" in describing pointers
5.3.5353WP Is deallocation routine called if destructor throws exception in delete?
5.3.5442review Incorrect use of null pointer constant in description of delete operator
5.4242open Interpretation of old-style casts
5.755NAD Adding/subtracting pointer and enumeration value
5.7179TC1 Function pointers and subtraction
5.1073TC1 Pointer equality
5.16446drafting Does an lvalue-to-rvalue conversion on the "?" operator produce a temporary?
5.18188TC1 Comma operator and rvalue conversion
5.1994TC1 Inconsistencies in the descriptions of constant expressions
5.1997NAD Use of bool constants in integral constant expressions
5.19236open Explicit temporaries and integral constant expressions
5.19339open Overload resolution in operand of sizeof in constant expression
5.19366WP String literal allowed in integral constant expression?
5.19367drafting throw operator allowed in constant expression?
5.19457drafting Wording nit on use of const variables in constant expressions
6.4227TC1 How many scopes in an if statement?
6.6276drafting Order of destruction of parameters and temporaries
6.6378open Wording that says temporaries are declared
6.7467open Jump past initialization of local static variable
7157open Omitted typedef declarator
7435review Change "declararation or definition" to "declaration"
7.1.169TC1 Storage class specifiers on template declarations
7.1.1154NAD Anonymous unions in unnamed namespaces
7.1.2281WP inline specifier in friend declarations
7.1.2317open Can a function be declared inline after it has been called?
7.1.2376NAD Class "definition" versus class "declaration"
7.1.2396WP Misleading note regarding use of auto for disambiguation
7.1.2397drafting Same address for string literals from default arguments in inline functions?
7.1.2412NAD Can a replacement allocation function be inline?
7.1.356TC1 Redeclaring typedefs within classes
7.1.3407open Named class with associated typedef: two names or one?
7.1.3422NAD Is a typedef redeclaration allowed with a template type that might be the same?
7.1.3424WP Wording problem with issue 56 resolution on redeclaring typedefs in class scope Are const volatile variables considered "constant expressions"? Template type-parameters are not syntactically type-names Grammar does not allow "friend class A<int>;" Position of friend specifier
7.2172WP Unsigned int as underlying type of enum
7.2377WP Enum whose enumerators will not fit in any integral type
7.3171TC1 Global namespace scope
7.3.1311NAD Using qualified name to reopen nested namespace Elaborated type specifiers referencing names declared in friend decls Friend declaration name lookup Definitions of friends and block-scope externs Friend declarations of template-ids
7.3.311WP How do the keywords typename/template interact with using-declarations?
7.3.336open using-declarations in multiple-declaration contexts
7.3.3101TC1 Redeclaration of extern "C" names via using-declarations
7.3.3109NAD Allowing ::template in using-declarations
7.3.3169NAD template-ids in using-declarations
7.3.3258WP using-declarations and cv-qualifiers
7.3.3386open Friend declaration of name brought in by using-declaration
7.3.3460drafting Can a using-declaration name a namespace?
7.3.4103TC1 Is it extended-namespace-definition or extension-namespace-definition ?
7.4461open Make asm conditionally-supported
7.54WP Does extern "C" affect the linkage of function names with internal linkage?
7.513extension extern "C" for Parameters of Function Templates
7.514NAD extern "C" functions and declarations in different namespaces
7.529WP Linkage of locally declared functions
7.5107extension Linkage of operator functions
7.5168extension C linkage for static member functions
7.5341drafting extern "C" namespace member function versus global variable
7.5358NAD Namespaces and extern "C"
8.2160WP Missing std:: qualification
8.2333NAD Ambiguous use of "declaration" in disambiguation section
8.2340NAD Unclear wording in disambiguation section
8.340TC1 Syntax of declarator-id
8.3159TC1 Namespace qualification in declarators
8.3374drafting Can explicit specialization outside namespace use qualified name?
8.3.2453review References may only bind to "valid" objects
8.3.4112WP Array types and cv-qualifiers
8.3.518NAD f(TYPE) where TYPE is void should be allowed
8.3.5135TC1 Class type in in-class member function definitions
8.3.5140WP Agreement of parameter declarations
8.3.5262WP Default arguments and ellipsis
8.3.5295WP cv-qualifiers on function types
8.3.5332open cv-qualified void parameter types
8.3.5393drafting Pointer to array of unknown bound in template argument list in parameter
8.3.61TC1 What if two using-declarations refer to the same function but the declarations introduce different default-arguments?
8.3.615dup Default arguments for parameters of function templates
8.3.665TC1 Typo in default argument example
8.3.666NAD Visibility of default args vs overloads added after using-declaration
8.3.6136WP Default arguments and friend declarations
8.3.6217TC1 Default arguments for non-template member functions of class templates
8.3.6325open When are default arguments parsed?
8.3.6361open Forward reference to default argument
8.55WP CV-qualifiers and type conversions
8.535TC1 Definition of default-initialization
8.578TC1 Section 8.5 paragraph 9 should state it only applies to non-static objects
8.5151TC1 Terminology of zero-initialization
8.5155open Brace initializer for scalar
8.5177WP Lvalues vs rvalues in copy-initialization
8.5178TC1 More on value-initialization
8.5253open Why must empty or fully-initialized const objects be initialized?
8.5277WP Zero-initialization of pointers
8.5302WP Value-initialization and generation of default constructor
8.5304TC1 Value-initialization of a reference
8.5.1163TC1 Description of subaggregate initializer
8.5.1430open Ordering of expression evaluation in initializer list
8.5.3233drafting References vs pointers in UDC overload resolution
8.5.3291review Overload resolution needed when binding reference to class rvalue
8.5.3391drafting Require direct binding of short-lived references to rvalues
8.5.3434drafting Unclear suppression of standard conversions while binding reference to lvalue
8.5.3450drafting Binding a reference to const to a cv-qualified array rvalue
9148TC1 POD classes and pointers to members
9175WP Class name injection and base name access
9176TC1 Name injection and templates
9273WP POD classes and operator&()
9284WP qualified-ids in class declarations
9327open Use of "structure" without definition
9355open Global-scope :: in elaborated-type-specifier
9379WP Change "class declaration" to "class definition"
9383WP Is a class with a declared but not defined destructor a POD?
9413drafting Definition of "empty class"
9.1417ready Using derived-class qualified name in out-of-class nested class definition
9.275TC1 In-class initialized members must be const
9.280TC1 Class members with same name as class
9.2190TC1 Layout-compatible POD-struct types
9.2328WP Missing requirement that class member types be complete
9.2437review Is type of class allowed in member function exception specification?
9.3.2452open Wording nit on description of this
9.467TC1 Evaluation of left side of object-expression
9.4.1315NAD Is call of static member function through null pointer undefined?
9.4.248TC1 Definitions of unused static members
9.4.2406WP Static data member in class with name for linkage purposes
9.4.2454drafting When is definition of static data member required?
9.557open Empty unions
9.5359extension Type definition in anonymous union
9.658open Signedness of bit fields of enum type
9.6436ready Problem in example in 9.6 paragraph 4
9.7347open Use of derived class name in defining base class nested class
9.8198WP Definition of "use" in local and nested classes
10.239review Conflicting ambiguity rules
10.2306review Ambiguity by class name injection
10.2380open Definition of "ambiguous base class" missing
10.4230open Calls to pure virtual functions
10.4390WP Pure virtual must be defined when implicitly called
118WP Access to template arguments used in a function return type and in the nested name specifier
11.27NAD Can a class with a private virtual base class be derived from?
11.29WP Clarification of access to base class members
11.216WP Access to members of indirect private base classes
11.217NAD Footnote 99 should discuss the naming class when describing members that can be accessed from friends
11.2142TC1 Injection-related errors in access example
11.2207WP using-declarations and protected access
11.2360open Using-declaration that reduces access
11.477WP The definition of friend does not allow nested classes to be friends
11.4209NADMust friend declaration names be accessible?
11.4445NAD Wording issue on friend declarations
11.519NAD Clarify protected member access
11.5161TC1 Access to protected nested type
11.5385ready How does protected member check of 11.5 interact with using-declarations?
11.810WP Can a nested class access its own class name as a qualified name if it is a private member of the enclosing class?
11.845WP Access to nested classes
12.1194TC1 Identifying constructors
12.1263WP Can a constructor be declared a friend?
12.1326WP Wording for definition of trivial constructor
12.1331WP Allowed copy constructor signatures
12.286drafting Lifetime of temporaries in query expressions
12.2117NAD Timing of destruction of temporaries
12.2124WP Lifetime of temporaries in default initialization of class arrays
12.2199open Order of destruction of temporaries
12.2201WP Order of destruction of temporaries in initializers
12.2320open Question on copy constructor elision example
12.2392WP Use of full expression lvalue before temporary destruction
12.2443drafting Wording nit in description of lifetime of temporaries
12.2462open Lifetime of temporaries bound to comma expressions
12.2464open Wording nit on lifetime of temporaries to which references are bound
12.3.1152TC1 explicit copy constructors
12.3.2296WP Can conversion functions be static?
12.3.2395open Conversion operator template syntax
12.4193TC1 Order of destruction of local automatics of destructor
12.4244WP Destructor lookup
12.4252WP Looking up deallocation functions in virtual destructors
12.4272WP Explicit destructor invocation and qualified-ids
12.4344open Naming destructors
12.4399drafting Destructor lookup redux
12.5255open Placement deallocation functions and lookup ambiguity
12.6.1363NAD Initialization of class from self
12.6.2235TC1 Assignment vs initialization
12.6.2257open Abstract base constructors and virtual base initialization
12.7307NAD Initialization of a virtual base class subobject
12.86extension Should the optimization that allows a class object to alias another object also allow the case of a parameter in an inline function to alias its argument?
12.820TC1 Some clarifications needed for 12.8 para 15
12.826NAD Copy constructors and default arguments
12.8111open Copy constructors and cv-qualifiers
12.8185TC1 "Named" temporaries and copy elision
12.8356NAD Wording of behavior of generated copy constructor for scalar members
12.8444NAD Overriding and the generated copy assignment operator (&C::f)() with nonstatic members Footnote 116 and Koenig lookup Calling overloaded function with static in set, with no object Access and surrogate call functions Operator lookup rules do not work well with parts of the library Class must be complete to allow operator lookup? Can a conversion be done on the left operand of a compound assignment? Clarification of overloading and UDC to reference type
13.3.351TC1 Overloading and user-defined conversions
13.3.3418open Imperfect wording on error on multiple default arguments on a called function
13.3.3455open Partial ordering and non-deduced arguments Overloading and conversion loophole used by auto_ptr Weighting of conversion functions in direct-initialization Reference binding and valid conversion sequences Overloading and deprecated conversion of string literal Misleading wording (rank of conversion)
13.461NAD Address of static member function "&p->f"
13.4115WP Address of template-id
13.4202TC1 Use of overloaded function name
13.4247NAD Pointer-to-member casts and function overload resolution
13.4250TC1 Address of function template specialization with non-deduced template arguments
13.5.3221WP Must compound assignment operators be member functions?
13.5.6420drafting postfixexpression->scalar_type_dtor() inconsistent
13.627NAD Overload ambiguities for builtin ?: prototypes
13.6260drafting User-defined conversions and built-in operator=
13.6425WP Set of candidates for overloaded built-in operator with float operand
1432TC1 Clarification of explicit instantiation of non-exported templates
1472dup Linkage and storage class specifiers for templates
14105TC1 Meaning of "template function"
14110open Can template functions and classes be declared in the same scope?
14134TC1 Template classes and declarator-ids
14204WP Exported class templates
14205drafting Templates and static data members
14323WP Where must export appear?
14335WP Allowing export on template members of nontemplate classes
14.121TC1 Can a default argument for a template parameter appear in a friend declaration?
14.149TC1 Restriction on non-type, non-value template arguments
14.1184WP Default arguments in template template-parameters
14.1187TC1 Scope of template parameter names
14.1215drafting Template parameters are not allowed in nested-name-specifiers
14.1226WP Default template arguments for function templates
14.1401drafting When is access for template parameter default arguments checked?
14.230TC1 Valid uses of "::template"
14.238TC1 Explicit template arguments and operator functions
14.296drafting Syntactic disambiguation using the template keyword
14.2228WP Use of template keyword with non-member templates
14.2301drafting Syntax for template-name
14.2314drafting template in base class specifier
14.2343open Make template optional in contexts that require a type
14.2431drafting Defect in wording in 14.2
14.2468open Allow ::template outside of templates
14.3246WP Jumps in function-try-block handlers
14.3372drafting Is access granted by base class specifiers available in following base class specifiers?
14.3440open Allow implicit pointer-to-member conversion on nontype template argument
14.3.162WP Unnamed members of classes used as type parameters
14.3.2100TC1 Clarify why string literals are not allowed as template arguments
14.3.2354open Null as nontype template argument
14.3.3150extension Template template parameters and default arguments What is a member function template? sizeof applied to unknown-bound array static data member of template
14.5.2114NAD Virtual overriding by template member function specializations
14.5.347NAD Template friend issues
14.5.3329WP Evaluation of friends of templates
14.5.3410ready Paragraph missed in changes for issue 166
14.5.4229open Partial specialization of function templates
14.5.4286WP Incorrect example in partial specialization Equivalent and functionally-equivalent function templates Can function templates differing only in parameter cv-qualifiers be overloaded? Some questions regarding partial ordering of function templates Partial ordering and explicit arguments Partial ordering of function templates is underspecified More on partial ordering of function templates
14.6120TC1 Nonexistent non-terminal qualified-name
14.6121TC1 Dependent type names with non-dependent nested-name-specifiers
14.6180WP typename and elaborated types
14.6183TC1 typename in explicit specializations
14.6345WP Misleading comment on example in templates chapter
14.6375dup Confusing example on lookup with typename
14.6382drafting Allow typename outside of templates
14.6409ready Obsolete paragraph missed by changes for issue 224
14.6.1186open Name hiding and template template-parameters
14.6.1316NAD Injected-class-name of template used as template template parameter
14.6.1448drafting Set of template functions in call with dependent explicit argument
14.6.1458drafting Hiding of member template parameters by other members
14.6.1459open Hiding of template parameters by base class members
14.6.2213TC1 Lookup in dependent base classes Are classes nested in templates dependent? Definition of dependent names Is a comma-expression dependent if its first operand is? Is offsetof type-dependent?
14.6.3206TC1 Semantic constraints on non-dependent names
14.6.42drafting How can dependent names be used in member declarations that appear outside of the class template definition?
14.6.422TC1 Template parameter with a default argument that refers to itself Order dependencies in template instantiation Issues with two-stage lookup of dependent names
14.6.5387WP Errors in example in 14.6.5
14.7259WP Restrictions on explicit specialization and instantiation
14.7.134NAD Argument dependent lookup and points of instantiation
14.7.163WP Class instantiation from pointer conversion to void*, null and self
14.7.1212drafting Implicit instantiation is not described clearly enough
14.7.246NAD Explicit instantiation of member templates
14.7.2237open Explicit instantiation and base class members
14.7.2293open Syntax of explicit instantiation/specialization too permissive
14.7.33NAD The template compilation model rules render some explicit specialization declarations not visible during instantiation
14.7.324TC1 Errors in examples in 14.7.3
14.7.344WP Member specializations
14.7.364TC1 Partial ordering to disambiguate explicit specialization
14.7.388NAD Specialization of member constant templates
14.7.3182open Access checking on explicit specializations
14.7.3275WP Explicit instantiation/specialization and using-directives
14.7.3285NAD Identifying a function template being specialized
14.7.3336WP Explicit specialization examples are still incorrect
14.8.1241TC1 Error in example in 14.8.1
14.8.1264open Unusable template constructors and conversion functions
14.8.2271open Explicit instantiation and template argument deduction
14.8.2297open Which template does an explicit specialization specialize?
14.8.2337WP Attempt to create array of abtract type should cause deduction to fail
14.8.2368WP Uses of non-type parameters that should cause deduction to fail
14.8.2398WP Ambiguous wording on naming a type in deduction Partial ordering, references and cv-qualifiers Nondeduced contexts Deduction of reference conversions Template argument deduction for conversion functions and qualification conversions Is an array bound a nondeduced context? Errors in template template-parameter example References to functions in template argument deduction Const template specializations and reference arguments
14.8.3415drafting Template deduction does not cause instantiation
1598TC1 Branching into try block
15211NAD Constructors should not be allowed to return normally after an exception
15.1104NAD Destroying the exception temp when no handler is found
15.1208WP Rethrowing exceptions in nested handlers
15.1428WP Mention of expression with reference type
15.3210TC1 What is the type matched by an exception handler?
15.3308NAD Catching exceptions with ambiguous base classes
15.3388open Catching base*& from a throw of derived*
15.425TC1 Exception specifications and pointers to members
15.487WP Exception specifications on function parameters
15.492open Should exception specifications be part of the type system?
15.4126TC1 Exception specifications and const
15.4133dup Exception specifications and checking
15.4346NAD Typo in 15.4
15.5.1219open Cannot defend against destructors that throw exceptions
15.5.337NAD When is uncaught_exception() true?
16394ready identifier-list is never defined
16.2370drafting Can #include <...> form be used other than for standard C++ headers?
16.3.4268open Macro name suppression in rescanned replacement text Alignment and placement new
A266NAD No grammar sentence symbol
C81NAD Null pointers and C compatability
D223open The meaning of deprecation
D.1145TC1 Deprecation of prefix ++
D.2167NAD Deprecating static functions
D.2174NAD Undeprecating global static
E131TC1 Typo in Lao characters
E248open Identifier characters
unknown106WP Creating references to references during template deduction/instantiation