C++ Standard Core Language Issue Index by Status, Revision 10


This document contains a summary listing of all the C++ Core Language Issues grouped by status. 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 Status




Issues with "Ready" Status:

Issue Section Title


Issues with "Review" Status:

Issue Section Title
1 8.3.6 What if two using-declarations refer to the same function but the declarations introduce different default-arguments?
9 11.2 Clarification of access to base class members
16 11.2 Access to members of indirect private base classes
21 14.1 Can a default argument for a template parameter appear in a friend declaration?
36 7.3.3 Using-declarations in multiple-declaration contexts
44 14.7.3 Member specializations
63 14.7.1 Class instantiation from pointer conversion to void*, null and self
64 14.7.3 Partial ordering to disambiguate explicit specialization
69 7.1.1 Storage class specifiers on template declarations
70 14.8.2.4 Is an array bound a nondeduced context?
78 8.5 Section 8.5 paragraph 9 should state it only applies to non-static objects
80 9.2 Class members with same name as class
83 13.3.3.2 Overloading and deprecated conversion of string literal
85 3.4.4 Redeclaration of member class
98 15 Branching into try block
105 14 Meaning of "template function"
113 5.2.2 Visibility of called function
128 5.2.9 Casting between enum types
132 3.5 Local types and linkage
135 8.3.5 Class type in in-class member function definitions
137 5.2.9 static_cast of cv void*
147 5.1 Naming the constructor
149 4.10 Accessibility and ambiguity
151 8.5 Terminology of zero-initialization
152 12.3.1 explicit copy constructors
153 13.3.3.2 Misleading wording (rank of conversion)
159 8.3 Namespace qualification in declarators
164 3.4.2 Overlap between Koenig and normal lookup
166 7.3.1.2 Friend declarations of template-ids
167 D.2 Deprecating static functions
171 7.3 Global namespace scope
173 2.2 Constraints on execution character set
178 8.5 More on value-initialization


Issues with "Drafting" Status:

Issue Section Title
2 14.6.4 How can dependent names be used in member declarations that appear outside of the class template definition?
4 7.5 Does extern "C" affect the linkage of function names with internal linkage?
5 8.5 CV-qualifiers and type conversions
28 3.6.3 'exit', 'signal' and static object destruction
29 7.5 Linkage of locally declared functions
38 14.2 Explicit template arguments and operator functions
39 10.2 Conflicting ambiguity rules
52 5.2.5 Non-static members, member selection and access checking
53 5.2.9 Lvalue-to-rvalue conversion before certain static_casts
62 14.3.1 Unnamed members of classes used as type parameters
68 7.1.5.3 Grammar does not allow "friend class A<int>;"
73 5.10 Pointer equality
77 11.4 The definition of friend does not allow nested classes to be friends
87 15.4 Exception specifications on function parameters
89 3.8 Object lifetime does not account for reference rebinding
94 5.19 Inconsistencies in the descriptions of constant expressions
106 unknown Creating references to references during template deduction/instantiation
108 14.6.2.1 Are classes nested in templates dependent?
117 12.2 Timing of destruction of temporaries
118 5.2.2 Calls via pointers to virtual member functions
121 14.6 Dependent type names with non-dependent nested-name-specifiers
124 12.2 Lifetime of temporaries in default initialization of class arrays
125 5.1 Ambiguity in friend declaration syntax
126 15.4 Exception specifications and const
127 5.3.4 Ambiguity in description of matching deallocation function
134 14 Template classes and declarator-ids
140 8.3.5 Agreement of parameter declarations
142 11.2 Injection-related errors in access example
143 3.4.2 Friends and Koenig lookup
145 D.1 Deprecation of prefix ++


Issues with "Open" Status:

Issue Section Title
8 11 Access to template arguments used in a function return type and in the nested name specifier
10 11.8 Can a nested class access its own class name as a qualified name if it is a private member of the enclosing class?
23 14.5.5.2 Some questions regarding partial ordering of function templates
45 11.8 Access to nested classes
57 9.5 Empty unions
58 9.6 Signedness of bit fields of enum type
60 13.3.3.1.4 Reference binding and valid conversion sequences
84 13.3.3.1 Overloading and conversion loophole used by auto_ptr
86 12.2 Lifetime of temporaries in query expressions
92 15.4 Should exception specifications be part of the type system?
96 14.2 Syntactic disambiguation using the template keyword
107 7.5 Linkage of operator functions
110 14 Can template functions and classes be declared in the same scope?
111 12.8 Copy constructors and cv-qualifiers
112 8.3.4 Array types and cv-qualifiers
115 13.4 Address of template-id
119 3.8 Object lifetime and aggregate initialization
122 5.1 template-ids as unqualified-ids
129 1.9 Stability of uninitialized auto variables
136 8.3.6 Default arguments and friend declarations
138 7.3.1.2 Friend declaration name lookup
139 3.4.1 Error in friend lookup example
141 3.4.5 Non-member function templates in member access expressions
144 7.1.5.3 Position of friend specifier
146 3.9.1 Floating-point zero
148 9 POD classes and pointers to members
155 8.5 Brace initializer for scalar
156 3.4.5 Name lookup for conversion functions
157 7 Omitted typedef declarator
158 3.10 Aliasing and qualification conversions
160 8.2 Missing std:: qualification
162 13.3.1.1 (&C::f)() with nonstatic members
170 4.11 Pointer-to-member conversions
172 7.2 Unsigned int as underlying type of enum
174 D.2 Undeprecating global static
175 9 Class name injection and base name access
176 9 Name injection and templates
177 8.5 Lvalues vs rvalues in copy-initialization
179 5.7 Function pointers and subtraction
180 14.6 typename and elaborated types
181 14.8.2.4 Errors in template template-parameter example
182 14.7.3 Access checking on explicit specializations
183 14.6 typename in explicit specializations
184 14.1 Default arguments in template template-parameters
185 12.8 "Named" temporaries and copy elision
186 14.6.1 Name hiding and template template-parameters
187 14.1 Scope of template parameter names
188 5.18 Comma operator and rvalue conversion
189 2.12 Definition of operator and punctuator
190 9.2 Layout-compatible POD-struct types
191 3.4.1 Name lookup does not handle complex nesting
192 3.4.1 Name lookup in parameters
193 12.4 Order of destruction of local automatics of destructor
194 12.1 Identifying constructors
195 5.2.10 Converting between function and object pointers
196 5.3.5 Arguments to deallocation functions
197 14.6.4.2 Issues with two-stage lookup of dependent names
198 9.8 Definition of "use" in local and nested classes
199 12.2 Order of destruction of temporaries
200 14.5.5.2 Partial ordering and explicit arguments
201 12.2 Order of destruction of temporaries in initializers
202 13.4 Use of overloaded function name
203 5.3.1 Type of address-of-member expression
204 14 Exported class templates
205 14 Templates and static data members
206 14.6.3 Semantic constraints on non-dependent names
207 11.2 using-declarations and protected access
208 15.1 Rethrowing exceptions in nested handlers
209 11.4 Must friend declaration names be accessible?
210 15.3 What is the type matched by an exception handler?
211 15 Constructors should not be allowed to return normally after an exception
212 14.7.1 Implicit instantiation is not described clearly enough
213 14.6.2 Lookup in dependent base classes
214 14.5.5.2 Partial ordering of function templates is underspecified
215 14.1 Template parameters are not allowed in nested-name-specifiers
216 3.5 Linkage of nameless class-scope enumeration types


Issues with "Dup" Status:

Issue Section Title
12 3.4.2 Default arguments on different declarations for the same function and the Koenig lookup
72 14 Linkage and storage class specifiers for templates
79 18.4.1.3 Alignment and placement new
82 3.2 Definition of "using" a constant expression
133 15.4 Exception specifications and checking


Issues with "NAD" Status:

Issue Section Title
3 14.7.3 The template compilation model rules render some explicit specialization declarations not visible during instantiation
7 11.2 Can a class with a private virtual base class be derived from?
14 7.5 extern "C" functions and declarations in different namespaces
17 11.2 Footnote 99 should discuss the naming class when describing members that can be accessed from friends
18 8.3.5 f(TYPE) where TYPE is void should be allowed
19 11.5 Clarify protected member access
26 12.8 Copy constructors and default arguments
27 13.6 Overload ambiguities for builtin ?: prototypes
31 5.3.4 Looking up new/delete
34 14.7.1 Argument dependent lookup and points of instantiation
37 15.5.3 When is uncaught_exception() true?
42 3.3.6 Redefining names from base classes
46 14.7.2 Explicit instantiation of member templates
47 14.5.3 Template friend issues
50 3.2 Converting pointer to incomplete type to same type
54 5.2.9 Static_cast from private base to derived class
55 5.7 Adding/subtracting pointer and enumeration value
61 13.4 Address of static member function "&p->f"
66 8.3.6 Visibility of default args vs overloads added after using-declaration
71 5 Incorrect cross reference
81 C Null pointers and C compatability
88 14.7.3 Specialization of member constant templates
91 3.4.2 A union's associated types should include the union itself
95 7.3.1.2 Elaborated type specifiers referencing names declared in friend decls
97 5.19 Use of bool constants in integral constant expressions
99 14.8.2.1 Partial ordering, references and cv-qualifiers
102 13.3.1.2 Operator lookup rules do not work well with parts of the library
104 15.1 Destroying the exception temp when no handler is found
114 14.5.2 Virtual overriding by template member function specializations
130 5.3.4 Sequence points and new-expressions
150 14.3.3 Template template parameters and default arguments
154 7.1.1 Anonymous unions in unnamed namespaces
165 7.3.1.2 Definitions of friends and block-scope externs
168 7.5 C linkage for static member functions
169 7.3.3 template-ids in using-declarations


Issues with "Extension" Status:

Issue Section Title
6 12.8 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?
11 7.3.3 How do the keywords typename/template interact with using-declarations?
13 7.5 extern "C" for Parameters of Function Templates
15 8.3.6 Default arguments for parameters of function templates
109 7.3.3 Allowing ::template in using-declarations


Issues with "DR" Status:

Issue Section Title
20 12.8 Some clarifications needed for 12.8 para 15
22 14.6.4 Template parameter with a default argument that refers to itself
24 14.7.3 Errors in examples in 14.7.3
25 15.4 Exception specifications and pointers to members
30 14.2 Valid uses of "::template"
32 14 Clarification of explicit instantiation of non-exported templates
33 3.4.2 Argument dependent lookup and overloaded functions
35 8.5 Definition of default-initialization
40 8.3 Syntax of declarator-id
41 3.4.1 Clarification of lookup of names after declarator-id
43 3.9 Copying base classes (PODs) using memcpy
48 9.4.2 Definitions of unused static members
49 14.1 Restriction on non-type, non-value template arguments
51 13.3.3 Overloading and user-defined conversions
56 7.1.3 Redeclaring typedefs within classes
59 13.3.1.4 Clarification of overloading and UDC to reference type
65 8.3.6 Typo in default argument example
67 9.4 Evaluation of left side of object-expression
74 5.3.4 Enumeration value in direct-new-declarator
75 9.2 In-class initialized members must be const
76 7.1.5.1 Are const volatile variables considered "constant expressions"?
90 3.4.2 Should the enclosing class be an "associated class" too?
93 3.8 Missing word in 3.8 basic.life paragraph 2
100 14.3.2 Clarify why string literals are not allowed as template arguments
101 7.3.3 Redeclaration of extern "C" names via using-declarations
103 7.3.4 Is it extended-namespace-definition or extension-namespace-definition ?
116 14.5.5.1 Equivalent and functionally-equivalent function templates
120 14.6 Nonexistent non-terminal qualified-name
123 5.1 Bad cross-reference
131 E Typo in Lao characters
161 11.5 Access to protected nested type
163 8.5.1 Description of subaggregate initializer