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


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.3open 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.6dup 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.4DR 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.1DR 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.4DR 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.5extension Linkage of operator functions
10814.6.2.1DR Are classes nested in templates dependent?
1097.3.3open 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.2open 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.2open Calls via pointers to virtual member functions
1193.8DR 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.2DR 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.3extension 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.10DR 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.1DR (&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.5extension 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.2DR 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.5DR Lvalues vs rvalues in copy-initialization
1788.5DR More on value-initialization
1795.7DR Function pointers and subtraction
18014.6DR typename and elaborated types
18114.8.2.4DR Errors in template template-parameter example
18214.7.3NAD Access checking on explicit specializations
18314.6DR typename in explicit specializations
18414.1ready 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.8ready 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
20414ready Exported class templates
20514drafting 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.2review 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.2extension All deallocation functions should be required not to throw
22113.5.3DR Must compound assignment operators be member functions?
2225drafting 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.1ready Default template arguments for function templates
2276.4DR How many scopes in an if statement?
22814.2ready 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.1NAD 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.4DR Destructor lookup
2453.4.4ready 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.4ready Definitional problems with elaborated-type-specifiers
25512.5open Placement deallocation functions and lookup ambiguity
2565.3.4extension Overflow in size calculations
25712.6.2open Abstract base constructors and virtual base initialization
2587.3.3ready using-declarations and cv-qualifiers
25914.7DR Restrictions on explicit specialization and instantiation
26013.6open User-defined conversions and built-in operator=
2613.2DR When is a deallocation function "used?"
2628.3.5ready Default arguments and ellipsis
26312.1ready 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.2DR 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
2739DR POD classes and operator&()
2743.8ready Cv-qualification and char-alias access to out-of-lifetime objects
27514.7.3DR 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.2DR inline specifier in friend declarations
2825.2.8open Namespace for extended_type_info
2837.1.5.2ready Template type-parameters are not syntactically type-names
2849DR qualified-ids in class declarations
28514.7.3NAD Identifying a function template being specialized
28614.5.4DR Incorrect example in partial specialization
28714.6.4.1drafting Order dependencies in template instantiation
2885.3.5open Misuse of "static type" in describing pointers
2893.2DR 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.9extension Can static_cast drop exception specifications?
2958.3.5DR cv-qualifiers on function types
29612.3.2DR Can conversion functions be static?
29714.8.2open Which template does an explicit specialization specialize?
2983.4.3.1ready T::x when T is cv-qualified
2995.3.4open Conversion on array bound expression in new
30014.8.2.4DR References to functions in template argument deduction
30114.2drafting Syntax for template-name
3028.5DR Value-initialization and generation of default constructor
3034.5NAD Integral promotions on bit-fields
3048.5DR Value-initialization of a reference
3053.4.5drafting Name lookup in destructor call
30610.2review 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
31414.2drafting template in base class specifier
3159.4.1open Is call of static member function through null pointer undefined?
31614.6.1NAD Injected-class-name of template used as template template parameter
3177.1.2open Can a function be declared inline after it has been called?
3183.4.3.1ready struct A::A should not name the constructor of A
3193.5open Use of names without linkage in declaring entities with linkage
32012.2open Question on copy constructor elision example
3213.4.2open Associated classes and namespaces for argument-dependent lookup
32214.8.2.3ready Deduction of reference conversions
32314ready Where must export appear?
3245.3.1review Can "&" be applied to assignment to bit-field?
3258.3.6open When are default arguments parsed?
32612.1review Wording for definition of trivial constructor
3279open Use of "structure" without definition
3289.2ready Missing requirement that class member types be complete
32914.5.3review Evaluation of friends of templates
3304.4open Qualification conversions and pointers to arrays of pointers
33112.1review Allowed copy constructor signatures
3328.3.5open cv-qualified void parameter types
3338.2NAD Ambiguous use of "declaration" in disambiguation section
33414.6.2.2open Is a comma-expression dependent if its first operand is?
33514ready Allowing export on template members of nontemplate classes
33614.7.3ready Explicit specialization examples are still incorrect
33714.8.2ready Attempt to create array of abtract type should cause deduction to fail
3383.5open Enumerator name with linkage used as class name in other translation unit
3395.19open Overload resolution in operand of sizeof in constant expression
3408.2NAD Unclear wording in disambiguation section
3417.5drafting extern "C" namespace member function versus global variable
3425.3open Terminology: "indirection" versus "dereference"
34314.2open Make template optional in contexts that require a type
34412.4open Naming destructors
34514.6ready Misleading comment on example in templates chapter
34615.4NAD Typo in 15.4
3479.7open Use of derived class name in defining base class nested class
3483.7.3.2drafting delete and user-written deallocation functions
34914.8.2.3review Template argument deduction for conversion functions and qualification conversions
3503.9drafting signed char underlying representation for objects
3515drafting Sequence point error: unspecified or undefined?
35214.8.2.1drafting Nondeduced contexts
3535.3.5ready Is deallocation routine called if destructor throws exception in delete?
35414.3.2open Null as nontype template argument
3559open Global-scope :: in elaborated-type-specifier
35612.8NAD Wording of behavior of generated copy constructor for scalar members
3571.3.10open Definition of signature should include name
3587.5NAD Namespaces and extern "C"
3599.5extension Type definition in anonymous union
36011.2open Using-declaration that reduces access
3618.3.6open Forward reference to default argument
3622.1review Order of initialization in instantiation units
36312.6.1NAD Initialization of class from self
36413.3.1.1.1review Calling overloaded function with static in set, with no object
3653.7open Storage duration and temporaries
3665.19review String literal allowed in integral constant expression?
3675.19drafting throw operator allowed in constant expression?
36814.8.2review Uses of non-type parameters that should cause deduction to fail
3692.4open Are new/delete identifiers or preprocessing-op-or-punc?
37016.2drafting Can #include <...> form be used other than for standard C++ headers?
3713.6.2open Interleaving of constructor calls
37214.3review Access checking and template template arguments
3733.4.6open Lookup on namespace qualified name in using-directive
3748.3drafting Can explicit specialization outside namespace use qualified name?
37514.6dup Confusing example on lookup with typename
3767.1.2NAD Class "definition" versus class "declaration"
3777.2ready Enum whose enumerators will not fit in any integral type
3786.6open Wording that says temporaries are declared
3799review Change "class declaration" to "class definition"
38010.2open Definition of "ambiguous base class" missing
3813.4.5open Incorrect example of base class member lookup
38214.6open Allow typename outside of templates
3839open Is a class with a declared but not defined destructor a POD?
3843.4.2open Argument-dependent lookup and operator functions
38511.5open How does protected member check of 11.5 interact with using-declarations?
3867.3.3open Friend declaration of name brought in by using-declaration
38714.6.5open Errors in example in 14.6.5
38815.3open Catching base*& from a throw of derived*
3893.5open Unnamed types in entities with linkage
39010.4open Pure virtual must be defined when implicitly called
3918.5.3open Require direct binding of short-lived references to rvalues
39212.2open Use of full expression lvalue before temporary destruction
3938.3.5open Pointer to array of unknown bound in template argument list in parameter
39416open identifier-list is never defined
39512.3.2open Conversion operator template syntax
3967.1.2open Misleading note regarding use of auto for disambiguation
3977.1.2open Same address for string literals from default arguments in inline functions?
39814.8.2open Ambiguous wording on naming a type in deduction
39912.4open Destructor lookup redux
4003.4.3.2open Using-declarations and the "struct hack"
40114.1open When is access for template parameter default arguments checked?