C++ Standard Core Language Issue Table of Contents, Revision 20


This document contains a summary listing of all the C++ Core Language Issues in numerical order. 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.




Table of Contents


IssueSectionStatusTitle
18.3.6DR What if two using-declarations refer to the same function but the declarations introduce different default-arguments?
214.6.4open How can dependent names be used in member declarations that appear outside of the class template definition?
314.7.3NAD The template compilation model rules render some explicit specialization declarations not visible during instantiation
47.5DR Does extern "C" affect the linkage of function names with internal linkage?
58.5DR CV-qualifiers and type conversions
612.8extension 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?
711.2NAD Can a class with a private virtual base class be derived from?
811DR Access to template arguments used in a function return type and in the nested name specifier
911.2DR Clarification of access to base class members
1011.8DR Can a nested class access its own class name as a qualified name if it is a private member of the enclosing class?
117.3.3extension How do the keywords typename/template interact with using-declarations?
123.4.2dup Default arguments on different declarations for the same function and the Koenig lookup
137.5extension extern "C" for Parameters of Function Templates
147.5NAD extern "C" functions and declarations in different namespaces
158.3.6extension Default arguments for parameters of function templates
1611.2DR Access to members of indirect private base classes
1711.2NAD Footnote 99 should discuss the naming class when describing members that can be accessed from friends
188.3.5NAD f(TYPE) where TYPE is void should be allowed
1911.5NAD Clarify protected member access
2012.8DR Some clarifications needed for 12.8 para 15
2114.1DR Can a default argument for a template parameter appear in a friend declaration?
2214.6.4DR Template parameter with a default argument that refers to itself
2314.5.5.2open Some questions regarding partial ordering of function templates
2414.7.3DR Errors in examples in 14.7.3
2515.4DR Exception specifications and pointers to members
2612.8NAD Copy constructors and default arguments
2713.6NAD Overload ambiguities for builtin ?: prototypes
283.6.3open 'exit', 'signal' and static object destruction
297.5DR Linkage of locally declared functions
3014.2DR Valid uses of "::template"
315.3.4NAD Looking up new/delete
3214DR Clarification of explicit instantiation of non-exported templates
333.4.2DR Argument dependent lookup and overloaded functions
3414.7.1NAD Argument dependent lookup and points of instantiation
358.5DR Definition of default-initialization
367.3.3open using-declarations in multiple-declaration contexts
3715.5.3NAD When is uncaught_exception() true?
3814.2DR Explicit template arguments and operator functions
3910.2review Conflicting ambiguity rules
408.3DR Syntax of declarator-id
413.4.1DR Clarification of lookup of names after declarator-id
423.3.6NAD Redefining names from base classes
433.9DR Copying base classes (PODs) using memcpy
4414.7.3DR Member specializations
4511.8DR Access to nested classes
4614.7.2NAD Explicit instantiation of member templates
4714.5.3NAD Template friend issues
489.4.2DR Definitions of unused static members
4914.1DR Restriction on non-type, non-value template arguments
503.2NAD Converting pointer to incomplete type to same type
5113.3.3DR Overloading and user-defined conversions
525.2.5DR Non-static members, member selection and access checking
535.2.9DR Lvalue-to-rvalue conversion before certain static_casts
545.2.9NAD Static_cast from private base to derived class
555.7NAD Adding/subtracting pointer and enumeration value
567.1.3DR Redeclaring typedefs within classes
579.5open Empty unions
589.6open Signedness of bit fields of enum type
5913.3.1.4DR Clarification of overloading and UDC to reference type
6013.3.3.1.4review Reference binding and valid conversion sequences
6113.4NAD Address of static member function "&p->f"
6214.3.1DR Unnamed members of classes used as type parameters
6314.7.1review Class instantiation from pointer conversion to void*, null and self
6414.7.3DR Partial ordering to disambiguate explicit specialization
658.3.6DR Typo in default argument example
668.3.6NAD Visibility of default args vs overloads added after using-declaration
679.4DR Evaluation of left side of object-expression
687.1.5.3DR Grammar does not allow "friend class A<int>;"
697.1.1DR Storage class specifiers on template declarations
7014.8.2.4DR Is an array bound a nondeduced context?
715NAD Incorrect cross reference
7214dup Linkage and storage class specifiers for templates
735.10DR Pointer equality
745.3.4DR Enumeration value in direct-new-declarator
759.2DR In-class initialized members must be const
767.1.5.1DR Are const volatile variables considered "constant expressions"?
7711.4ready The definition of friend does not allow nested classes to be friends
788.5DR Section 8.5 paragraph 9 should state it only applies to non-static objects
7918.4.1.3dup Alignment and placement new
809.2DR Class members with same name as class
81CNAD Null pointers and C compatability
823.2dup Definition of "using" a constant expression
8313.3.3.2DR Overloading and deprecated conversion of string literal
8413.3.3.1DR Overloading and conversion loophole used by auto_ptr
853.4.4DR Redeclaration of member class
8612.2drafting Lifetime of temporaries in query expressions
8715.4DR Exception specifications on function parameters
8814.7.3NAD Specialization of member constant templates
893.8DR Object lifetime does not account for reference rebinding
903.4.2DR Should the enclosing class be an "associated class" too?
913.4.2NAD A union's associated types should include the union itself
9215.4open Should exception specifications be part of the type system?
933.8DR Missing word in 3.8 basic.life paragraph 2
945.19DR Inconsistencies in the descriptions of constant expressions
957.3.1.2NAD Elaborated type specifiers referencing names declared in friend decls
9614.2open Syntactic disambiguation using the template keyword
975.19NAD Use of bool constants in integral constant expressions
9815DR Branching into try block
9914.8.2.1NAD Partial ordering, references and cv-qualifiers
10014.3.2DR Clarify why string literals are not allowed as template arguments
1017.3.3DR Redeclaration of extern "C" names via using-declarations
10213.3.1.2NAD Operator lookup rules do not work well with parts of the library
1037.3.4DR Is it extended-namespace-definition or extension-namespace-definition ?
10415.1NAD Destroying the exception temp when no handler is found
10514DR Meaning of "template function"
106unknownDR Creating references to references during template deduction/instantiation
1077.5NAD Linkage of operator functions
10814.6.2.1DR Are classes nested in templates dependent?
1097.3.3extension Allowing ::template in using-declarations
11014open Can template functions and classes be declared in the same scope?
11112.8open Copy constructors and cv-qualifiers
1128.3.4DR Array types and cv-qualifiers
1135.2.2DR Visibility of called function
11414.5.2NAD Virtual overriding by template member function specializations
11513.4review Address of template-id
11614.5.5.1DR Equivalent and functionally-equivalent function templates
11712.2NAD Timing of destruction of temporaries
1185.2.2drafting Calls via pointers to virtual member functions
1193.8ready Object lifetime and aggregate initialization
12014.6DR Nonexistent non-terminal qualified-name
12114.6DR Dependent type names with non-dependent nested-name-specifiers
1225.1DR template-ids as unqualified-ids
1235.1DR Bad cross-reference
12412.2DR Lifetime of temporaries in default initialization of class arrays
1255.1drafting Ambiguity in friend declaration syntax
12615.4DR Exception specifications and const
1275.3.4DR Ambiguity in description of matching deallocation function
1285.2.9DR Casting between enum types
1291.9open Stability of uninitialized auto variables
1305.3.4NAD Sequence points and new-expressions
131EDR Typo in Lao characters
1323.5NAD Local types and linkage
13315.4dup Exception specifications and checking
13414DR Template classes and declarator-ids
1358.3.5DR Class type in in-class member function definitions
1368.3.6DR Default arguments and friend declarations
1375.2.9DR static_cast of cv void*
1387.3.1.2drafting Friend declaration name lookup
1393.4.1DR Error in friend lookup example
1408.3.5DR Agreement of parameter declarations
1413.4.5open Non-member function templates in member access expressions
14211.2DR Injection-related errors in access example
1433.4.2ready Friends and Koenig lookup
1447.1.5.3open Position of friend specifier
145D.1DR Deprecation of prefix ++
1463.9.1open Floating-point zero
1475.1DR Naming the constructor
1489DR POD classes and pointers to members
1494.10DR Accessibility and ambiguity
15014.3.3NAD Template template parameters and default arguments
1518.5DR Terminology of zero-initialization
15212.3.1DR explicit copy constructors
15313.3.3.2DR Misleading wording (rank of conversion)
1547.1.1NAD Anonymous unions in unnamed namespaces
1558.5open Brace initializer for scalar
1563.4.5drafting Name lookup for conversion functions
1577open Omitted typedef declarator
1583.10ready Aliasing and qualification conversions
1598.3DR Namespace qualification in declarators
1608.2DR Missing std:: qualification
16111.5DR Access to protected nested type
16213.3.1.1review (&C::f)() with nonstatic members
1638.5.1DR Description of subaggregate initializer
1643.4.2DR Overlap between Koenig and normal lookup
1657.3.1.2NAD Definitions of friends and block-scope externs
1667.3.1.2DR Friend declarations of template-ids
167D.2NAD Deprecating static functions
1687.5NAD C linkage for static member functions
1697.3.3NAD template-ids in using-declarations
1704.11open Pointer-to-member conversions
1717.3DR Global namespace scope
1727.2review Unsigned int as underlying type of enum
1732.2DR Constraints on execution character set
174D.2NAD Undeprecating global static
1759DR Class name injection and base name access
1769DR Name injection and templates
1778.5ready Lvalues vs rvalues in copy-initialization
1788.5DR More on value-initialization
1795.7DR Function pointers and subtraction
18014.6ready typename and elaborated types
18114.8.2.4DR Errors in template template-parameter example
18214.7.3open Access checking on explicit specializations
18314.6DR typename in explicit specializations
18414.1open Default arguments in template template-parameters
18512.8DR "Named" temporaries and copy elision
18614.6.1open Name hiding and template template-parameters
18714.1DR Scope of template parameter names
1885.18DR Comma operator and rvalue conversion
1892.12open Definition of operator and punctuator
1909.2DR Layout-compatible POD-struct types
1913.4.1open Name lookup does not handle complex nesting
1923.4.1open Name lookup in parameters
19312.4DR Order of destruction of local automatics of destructor
19412.1DR Identifying constructors
1955.2.10open Converting between function and object pointers
1965.3.5open Arguments to deallocation functions
19714.6.4.2drafting Issues with two-stage lookup of dependent names
1989.8review Definition of "use" in local and nested classes
19912.2open Order of destruction of temporaries
20014.5.5.2dup Partial ordering and explicit arguments
20112.2DR Order of destruction of temporaries in initializers
20213.4DR Use of overloaded function name
2035.3.1open Type of address-of-member expression
20414open Exported class templates
20514open Templates and static data members
20614.6.3DR Semantic constraints on non-dependent names
20711.2DR using-declarations and protected access
20815.1DR Rethrowing exceptions in nested handlers
20911.4NADMust friend declaration names be accessible?
21015.3DR What is the type matched by an exception handler?
21115NAD Constructors should not be allowed to return normally after an exception
21214.7.1open Implicit instantiation is not described clearly enough
21314.6.2DR Lookup in dependent base classes
21414.5.5.2open Partial ordering of function templates is underspecified
21514.1drafting Template parameters are not allowed in nested-name-specifiers
2163.5DR Linkage of nameless class-scope enumeration types
2178.3.6DR Default arguments for non-template member functions of class templates
2183.4.2open Specification of Koenig lookup
21915.5.1open Cannot defend against destructors that throw exceptions
2203.7.3.2NAD All deallocation functions should be required not to throw
22113.5.3DR Must compound assignment operators be member functions?
2225open Sequence points and lvalue-returning operators
223Dopen The meaning of deprecation
22414.6.2.1DR Definition of dependent names
2253.4.2drafting Koenig lookup and fundamental types
22614.1review Default template arguments for function templates
2276.4DR How many scopes in an if statement?
22814.2open Use of template keyword with non-member templates
22914.5.4open Partial specialization of function templates
23010.4open Calls to pure virtual functions
2313.4.1open Visibility of names after using-directives
2325.3.1open Is indirection through a null pointer undefined behavior?
2338.5.3open References vs pointers in UDC overload resolution
2343.8NAD Reuse of base class subobjects
23512.6.2DR Assignment vs initialization
2365.19open Explicit temporaries and integral constant expressions
23714.7.2open Explicit instantiation and base class members
2385open Precision and accuracy constraints on floating point
23913.3.1.1.1DR Footnote 116 and Koenig lookup
2404.1open Uninitialized values and undefined behavior
24114.8.1DR Error in example in 14.8.1
2425.4open Interpretation of old-style casts
24313.3.3.1.2NAD Weighting of conversion functions in direct-initialization
24412.4drafting Destructor lookup
2453.4.4drafting Name lookup in elaborated-type-specifiers
24614.3DR Jumps in function-try-block handlers
24713.4NAD Pointer-to-member casts and function overload resolution
248Eopen Identifier characters
24914.5.1.1DR What is a member function template?
25013.4DR Address of function template specialization with non-deduced template arguments
2513.9.1open How many signed integer types are there?
25212.4DR Looking up deallocation functions in virtual destructors
2538.5open Why must empty or fully-initialized const objects be initialized?
2543.4.4drafting Definitional problems with elaborated-type-specifiers
25512.4open Placement deallocation functions and lookup ambiguity
2565.3.4NAD Overflow in size calculations
25712.6.2open Abstract base constructors and virtual base initialization
2587.3.3review using-declarations and cv-qualifiers
25914.7ready Restrictions on explicit specialization and instantiation
26013.6open User-defined conversions and built-in operator=
2613.2review When is a deallocation function "used?"
2628.3.5drafting Default arguments and ellipsis
26312.1drafting Can a constructor be declared a friend?
26414.8.1open Unusable template constructors and conversion functions
2655.3.5open Destructors, exceptions, and deallocation
266ANAD No grammar sentence symbol
2675.3.4open Alignment requirement for new-expressions
26816.3.4open Macro name suppression in rescanned replacement text
2693.6.2NAD Order of initialization of multiply-defined static data members of class templates
2703.6.2ready Order of initialization of static data members of class templates
27114.8.2open Explicit instantiation and template argument deduction
27212.4DR Explicit destructor invocation and qualified-ids
2739review POD classes and operator&()
2743.8review Cv-qualification and char-alias access to out-of-lifetime objects
27514.7.3ready Explicit instantiation/specialization and using-directives
2766.6open Order of destruction of parameters and temporaries
2778.5DR Zero-initialization of pointers
2783.5open External linkage and nameless entities
2793.5open Correspondence of "names for linkage purposes"
28013.3.1.1.2review Access and surrogate call functions
2817.1.2review inline specifier in friend declarations
2825.2.8open Namespace for extended_type_info
2837.1.5.2drafting Template type-parameters are not syntactically type-names
2849review qualified-ids in class declarations
28514.7.3NAD Identifying a function template being specialized
28614.5.4ready Incorrect example in partial specialization
28714.6.4.1review Order dependencies in template instantiation
2885.3.5open Misuse of "static type" in describing pointers
2893.2review Incomplete list of contexts requiring a complete type
2903.9open Should memcpy be allowed into a POD with a const member?
2918.5.3open Overload resolution needed when binding reference to class rvalue
2925.3.4open Deallocation on exception in new before arguments evaluated
29314.7.2open Syntax of explicit instantiation/specialization too permissive
2945.2.9NAD Can static_cast drop exception specifications?
2958.3.5review cv-qualifiers on function types
29612.3.2open Can conversion functions be static?
29714.8.2open Which template does an explicit specialization specialize?
2983.4.3.1review T::x when T is cv-qualified
2995.3.4open Conversion on array bound expression in new
30014.8.2.4review References to functions in template argument deduction
30114.2drafting Syntax for template-name
3028.5review Value-initialization and generation of default constructor
3034.5NAD Integral promotions on bit-fields
3048.5review Value-initialization of a reference
3053.4.5drafting Name lookup in destructor call
30610.2drafting Ambiguity by class name injection
30712.7NAD Initialization of a virtual base class subobject
30815.3NAD Catching exceptions with ambiguous base classes
3093open Linkage of entities whose names are not simply identifiers, in introduction
31014.5.5.1open Can function templates differing only in parameter cv-qualifiers be overloaded?
3117.3.1open Using qualified name to reopen nested namespace
3123.7.3.2open "use" of invalid pointer value not defined
3135.3.4open Class with single conversion function to integral as array size in new