Index: clang/test/CXX/drs/dr177x.cpp =================================================================== --- /dev/null +++ clang/test/CXX/drs/dr177x.cpp @@ -0,0 +1,78 @@ +// RUN: %clang_cc1 -std=c++98 %s -fexceptions -fcxx-exceptions -pedantic-errors -ast-dump | FileCheck %s +// RUN: %clang_cc1 -std=c++11 %s -fexceptions -fcxx-exceptions -pedantic-errors -ast-dump | FileCheck %s --check-prefixes=CHECK,CXX11 +// RUN: %clang_cc1 -std=c++14 %s -fexceptions -fcxx-exceptions -pedantic-errors -ast-dump | FileCheck %s --check-prefixes=CHECK,CXX11,CXX14 +// RUN: %clang_cc1 -std=c++1z %s -fexceptions -fcxx-exceptions -pedantic-errors -ast-dump | FileCheck %s --check-prefixes=CHECK,CXX11,CXX14 + +namespace dr1772 { // dr1772: 14 + // __func__ in a lambda should name operator(), not the containing function. + // CHECK: NamespaceDecl{{.+}}dr1772 +#if __cplusplus >= 201103L + auto x = []() { __func__; }; + // CXX11: LambdaExpr + // CXX11: CXXRecordDecl + // CXX11: CXXMethodDecl{{.+}} operator() 'void () const' + // CXX11-NEXT: CompoundStmt + // CXX11-NEXT: PredefinedExpr{{.+}} 'const char [11]' lvalue __func__ + // CXX11-NEXT: StringLiteral{{.+}} 'const char [11]' lvalue "operator()" + + void func() { + // CXX11: FunctionDecl{{.+}} func + (void)[]() { __func__; }; + // CXX11-NEXT: CompoundStmt + // CXX11: LambdaExpr + // CXX11: CXXRecordDecl + // CXX11: CXXMethodDecl{{.+}} operator() 'void () const' + // CXX11-NEXT: CompoundStmt + // CXX11-NEXT: PredefinedExpr{{.+}} 'const char [11]' lvalue __func__ + // CXX11-NEXT: StringLiteral{{.+}} 'const char [11]' lvalue "operator()" + } +#endif // __cplusplus >= 201103L +} + +namespace dr1779 { // dr1779: 14 + // __func__ in a function template, member function template, or generic + // lambda should have a dependent type. + // CHECK: NamespaceDecl{{.+}}dr1779 + + template + void FuncTemplate() { + __func__; + // CHECK: FunctionDecl{{.+}} FuncTemplate + // CHECK-NEXT: CompoundStmt + // CHECK-NEXT: PredefinedExpr{{.+}} '' lvalue __func__ + } + + template + class ClassTemplate { + // CHECK: ClassTemplateDecl{{.+}} ClassTemplate + void MemFunc() { + // CHECK: CXXMethodDecl{{.+}} MemFunc 'void ()' + // CHECK-NEXT: CompoundStmt + // CHECK-NEXT: PredefinedExpr{{.+}} '' lvalue __func__ + __func__; + } + void OutOfLineMemFunc(); + }; + + template void ClassTemplate::OutOfLineMemFunc() { + // CHECK: CXXMethodDecl{{.+}}parent{{.+}} OutOfLineMemFunc 'void ()' + // CHECK-NEXT: CompoundStmt + // CHECK-NEXT: PredefinedExpr{{.+}} '' lvalue __func__ + __func__; + } + +#if __cplusplus >= 201402L + void contains_generic_lambda() { + // CXX14: FunctionDecl{{.+}}contains_generic_lambda + // CXX14: LambdaExpr + // CXX14: CXXRecordDecl + // CXX14: CXXMethodDecl{{.+}} operator() 'auto (auto) const' + // CXX14-NEXT: ParmVarDecl + // CXX14-NEXT: CompoundStmt + // CXX14-NEXT: PredefinedExpr{{.+}} '' lvalue __func__ + (void)[](auto x) { + __func__; + }; + } +#endif // __cplusplus >= 201402L +} Index: clang/www/cxx_dr_status.html =================================================================== --- clang/www/cxx_dr_status.html +++ clang/www/cxx_dr_status.html @@ -40,246 +40,54 @@ Issue title Available in Clang? - - 1 - TC1 - What if two using-declarations refer to the same function but the declarations introduce different default-arguments? - No - - - 2 - drafting - How can dependent names be used in member declarations that appear outside of the class template definition? - Not resolved - - - 3 - NAD - The template compilation model rules render some explicit specialization declarations not visible during instantiation - Yes - - - 4 - CD1 - Does extern "C" affect the linkage of function names with internal linkage? - Yes - - - 5 - CD1 - CV-qualifiers and type conversions - Yes - 6 open 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? Not resolved - - 7 - NAD - Can a class with a private virtual base class be derived from? - Yes - - - 8 - CD1 - Access to template arguments used in a function return type and in the nested name specifier - Duplicate of 45 - - - 9 - CD1 - Clarification of access to base class members - Yes - - - 10 - CD1 - Can a nested class access its own class name as a qualified name if it is a private member of the enclosing class? - Duplicate of 45 - - - 11 - CD1 - How do the keywords typename/template interact with using-declarations? - Yes - 12 dup Default arguments on different declarations for the same function and the Koenig lookup Superseded by 239 - - 13 - NAD - extern "C" for Parameters of Function Templates - No - - - 14 - NAD - extern "C" functions and declarations in different namespaces - Yes - - - 15 - dup - Default arguments for parameters of function templates - Yes - - - 16 - CD1 - Access to members of indirect private base classes - Yes - - - 17 - NAD - Footnote 99 should discuss the naming class when describing members that can be accessed from friends - Yes - - - 18 - NAD - f(TYPE) where TYPE is void should be allowed - Superseded by 577 - - - 19 - NAD - Clarify protected member access - Yes - 20 TC1 Some clarifications needed for 12.8 para 15 Yes - - 21 - TC1 - Can a default argument for a template parameter appear in a friend declaration? - Yes - - - 22 - TC1 - Template parameter with a default argument that refers to itself - Superseded by 481 - - - 23 - NAD - Some questions regarding partial ordering of function templates - Yes - - - 24 - TC1 - Errors in examples in 14.7.3 - N/A - - - 25 - TC1 - Exception specifications and pointers to members - Yes - 26 NAD Copy constructors and default arguments Yes - - 27 - NAD - Overload ambiguities for builtin ?: prototypes - Yes - 28 CD1 'exit', 'signal' and static object destruction N/A (Library DR) - - 29 - CD1 - Linkage of locally declared functions - Clang 3.4 - - - 30 - TC1 - Valid uses of "::template" - Superseded by 468 (C++11 onwards) - 31 NAD Looking up new/delete Yes - - 32 - TC1 - Clarification of explicit instantiation of non-exported templates - N/A - 33 TC1 Argument dependent lookup and overloaded functions Yes - - 34 - NAD - Argument dependent lookup and points of instantiation - N/A - - - 35 - TC1 - Definition of default-initialization - Duplicate of 178 - - - 36 - open - using-declarations in multiple-declaration contexts - Not resolved - - - 37 - NAD - When is uncaught_exception() true? - Superseded by 475 - - - 38 - TC1 - Explicit template arguments and operator functions - Yes - 39 CD1 Conflicting ambiguity rules No - - 40 - TC1 - Syntax of declarator-id - N/A - 41 TC1 @@ -298,54 +106,12 @@ Copying base classes (PODs) using memcpy N/A - - 44 - CD1 - Member specializations - Superseded by 727 - - - 45 - CD1 - Access to nested classes - Yes - - - 46 - NAD - Explicit instantiation of member templates - Yes - - - 47 - NAD - Template friend issues - Superseded by 329 - - - 48 - TC1 - Definitions of unused static members - Yes - - - 49 - TC1 - Restriction on non-type, non-value template arguments - Yes - 50 NAD Converting pointer to incomplete type to same type Yes - - 51 - TC1 - Overloading and user-defined conversions - Yes - 52 TC1 @@ -370,108 +136,12 @@ Adding/subtracting pointer and enumeration value Yes - - 56 - TC1 - Redeclaring typedefs within classes - Yes - - - 57 - open - Empty unions - Not resolved - - - 58 - CD1 - Signedness of bit fields of enum type - Yes - - - 59 - TC1 - Clarification of overloading and UDC to reference type - Yes - - - 60 - CD1 - Reference binding and valid conversion sequences - Yes - - - 61 - NAD - Address of static member function "&p->f" - Yes - - - 62 - CD1 - Unnamed members of classes used as type parameters - Yes - - - 63 - CD1 - Class instantiation from pointer conversion to void*, null and self - Yes - - - 64 - TC1 - Partial ordering to disambiguate explicit specialization - Yes - - - 65 - TC1 - Typo in default argument example - N/A - - - 66 - NAD - Visibility of default args vs overloads added after using-declaration - No - - - 67 - TC1 - Evaluation of left side of object-expression - N/A - - - 68 - TC1 - Grammar does not allow "friend class A<int>;" - Yes - 69 TC1 Storage class specifiers on template declarations Yes - - 70 - CD1 - Is an array bound a nondeduced context? - Yes - - - 71 - NAD - Incorrect cross reference - N/A - - - 72 - dup - Linkage and storage class specifiers for templates - Duplicate of 69 - 73 TC1 @@ -484,66 +154,12 @@ Enumeration value in direct-new-declarator Yes - - 75 - TC1 - In-class initialized members must be const - Yes - - - 76 - TC1 - Are const volatile variables considered "constant expressions"? - Yes - - - 77 - CD1 - The definition of friend does not allow nested classes to be friends - Yes - - - 78 - CD1 - Section 8.5 paragraph 9 should state it only applies to non-static objects - Superseded by ???? - - - 79 - dup - Alignment and placement new - N/A - - - 80 - TC1 - Class members with same name as class - Yes - - - 81 - NAD - Null pointers and C compatibility - N/A - 82 dup Definition of "using" a constant expression Duplicate of 48 - - 83 - TC1 - Overloading and deprecated conversion of string literal - Yes - - - 84 - TC1 - Overloading and conversion loophole used by auto_ptr - Yes - 85 TC1 @@ -556,18 +172,6 @@ Lifetime of temporaries in query expressions Duplicate of 446 - - 87 - CD1 - Exception specifications on function parameters - No - - - 88 - NAD - Specialization of member constant templates - Yes - 89 TC1 @@ -586,12 +190,6 @@ A union's associated types should include the union itself Yes - - 92 - CD4 - Should exception-specifications be part of the type system? - Clang 4 (C++17 onwards) - 93 TC1 @@ -610,132 +208,24 @@ Elaborated type specifiers referencing names declared in friend decls Yes - - 96 - C++11 - Syntactic disambiguation using the template keyword - No - 97 NAD Use of bool constants in integral constant expressions Yes - - 98 - TC1 - Branching into try block - Yes - - - 99 - NAD - Partial ordering, references and cv-qualifiers - Superseded by 214 - - - 100 - TC1 - Clarify why string literals are not allowed as template arguments - Yes - - - 101 - TC1 - Redeclaration of extern "C" names via using-declarations - Clang 3.5 - - - 102 - NAD - Operator lookup rules do not work well with parts of the library - Yes - - - 103 - TC1 - Is it extended-namespace-definition or extension-namespace-definition ? - N/A - - - 104 - NAD - Destroying the exception temp when no handler is found - N/A (Library DR) - - - 105 - TC1 - Meaning of "template function" - N/A - - - 106 - CD1 - Creating references to references during template deduction/instantiation - Superseded by 540 - - - 107 - NAD - Linkage of operator functions - Yes - - - 108 - TC1 - Are classes nested in templates dependent? - Yes - - - 109 - NAD - Allowing ::template in using-declarations - Yes - - - 110 - open - Can template functions and classes be declared in the same scope? - Not resolved - 111 NAD Copy constructors and cv-qualifiers Duplicate of 535 - - 112 - CD1 - Array types and cv-qualifiers - Yes - 113 CD1 Visibility of called function Yes - - 114 - NAD - Virtual overriding by template member function specializations - Yes - - - 115 - CD1 - Address of template-id - Yes - - - 116 - TC1 - Equivalent and functionally-equivalent function templates - Yes - 117 NAD @@ -754,18 +244,6 @@ Object lifetime and aggregate initialization N/A - - 120 - TC1 - Nonexistent non-terminal qualified-name - N/A - - - 121 - TC1 - Dependent type names with non-dependent nested-name-specifiers - Yes - 122 CD1 @@ -790,12 +268,6 @@ Ambiguity in friend declaration syntax Yes - - 126 - TC1 - Exception specifications and const - Partial - 127 TC1 @@ -824,7 +296,7 @@ 131 TC1 Typo in Lao characters - Superseded by P1949 + Superseded by P1949 132 @@ -832,41 +304,17 @@ Local types and linkage No - - 133 - dup - Exception specifications and checking - Duplicate of 87 - - - 134 - TC1 - Template classes and declarator-ids - N/A - - - 135 - TC1 - Class type in in-class member function definitions - Yes - - - 136 - CD1 - Default arguments and friend declarations - Clang 3.4 - - - 137 + + 137 TC1 static_cast of cv void* Yes - + 138 - drafting + DRWP Friend declaration name lookup - Not resolved + Unknown 139 @@ -874,42 +322,18 @@ Error in friend lookup example Yes - - 140 - CD1 - Agreement of parameter declarations - Yes - 141 CD1 Non-member function templates in member access expressions Yes - - 142 - TC1 - Injection-related errors in access example - Yes - 143 CD1 Friends and Koenig lookup Yes - - 144 - open - Position of friend specifier - Not resolved - - - 145 - TC1 - Deprecation of prefix ++ - Yes - 146 open @@ -922,65 +346,23 @@ Naming the constructor Yes - - 148 - TC1 - POD classes and pointers to members - Yes - 149 TC1 Accessibility and ambiguity N/A - - 150 - C++17 - Template template parameters and default arguments - Unknown - - - 151 - TC1 - Terminology of zero-initialization - Yes - - - 152 - TC1 - explicit copy constructors - Yes - - - 153 - TC1 - Misleading wording (rank of conversion) - N/A - 154 NAD Anonymous unions in unnamed namespaces Yes - - 155 - dup - Brace initializer for scalar - Duplicate of 632 - - + 156 - drafting + NAD Name lookup for conversion functions - Not resolved - - - 157 - open - Omitted typedef declarator - Not resolved + Unknown 158 @@ -988,36 +370,6 @@ Aliasing and qualification conversions Yes - - 159 - TC1 - Namespace qualification in declarators - Clang 3.5 - - - 160 - CD1 - Missing std:: qualification - N/A - - - 161 - TC1 - Access to protected nested type - Yes - - - 162 - CD1 - (&C::f)() with nonstatic members - No - - - 163 - TC1 - Description of subaggregate initializer - N/A - 164 TC1 @@ -1042,36 +394,12 @@ Deprecating static functions Superseded by 1012 - - 168 - NAD - C linkage for static member functions - No - - - 169 - NAD - template-ids in using-declarations - Yes - 170 drafting Pointer-to-member conversions Not resolved - - 171 - TC1 - Global namespace scope - Yes - - - 172 - CD1 - Unsigned int as underlying type of enum - Yes - 173 TC1 @@ -1084,84 +412,18 @@ Undeprecating global static Superseded by 1012 - - 175 - CD1 - Class name injection and base name access - Yes - - - 176 - TC1 - Name injection and templates - Yes - - - 177 - CD1 - Lvalues vs rvalues in copy-initialization - Yes - - - 178 - TC1 - More on value-initialization - Yes - 179 TC1 Function pointers and subtraction Yes - - 180 - CD1 - typename and elaborated types - Yes - - - 181 - TC1 - Errors in template template-parameter example - Yes - - - 182 - NAD - Access checking on explicit specializations - Yes - - - 183 - TC1 - typename in explicit specializations - Superseded by 382 - - - 184 - CD1 - Default arguments in template template-parameters - Yes - 185 TC1 "Named" temporaries and copy elision Unknown - - 186 - open - Name hiding and template template-parameters - Not resolved - - - 187 - TC1 - Scope of template parameter names - Superseded by 481 - 188 TC1 @@ -1174,36 +436,18 @@ Definition of operator and punctuator Not resolved - - 190 - TC1 - Layout-compatible POD-struct types - Unknown - - + 191 - open + DRWP Name lookup does not handle complex nesting - Not resolved + Unknown - + 192 - drafting + NAD Name lookup in parameters - Not resolved - - - 193 - TC1 - Order of destruction of local automatics of destructor Unknown - - 194 - TC1 - Identifying constructors - Yes - 195 CD1 @@ -1216,211 +460,66 @@ Arguments to deallocation functions Not resolved - - 197 - CD1 - Issues with two-stage lookup of dependent names - Yes - - - 198 - CD1 - Definition of "use" in local and nested classes - Yes - 199 CD1 Order of destruction of temporaries Unknown - - 200 - dup - Partial ordering and explicit arguments - Duplicate of 214 - 201 CD1 Order of destruction of temporaries in initializers Unknown - - 202 - TC1 - Use of overloaded function name - Yes - 203 NAD Type of address-of-member expression Unknown - - 204 - CD1 - Exported class templates - No - - - 205 - drafting - Templates and static data members - Not resolved - 206 TC1 Semantic constraints on non-dependent names Yes - - 207 - CD1 - using-declarations and protected access - Yes - - - 208 - CD1 - Rethrowing exceptions in nested handlers - Unknown - - - 209 - NAD - Must friend declaration names be -accessible? - Yes - - - 210 - TC1 - What is the type matched by an exception handler? - Unknown - - - 211 - NAD - Constructors should not be allowed to return normally after an exception - Yes - - - 212 - CD4 - Implicit instantiation is not described clearly enough - Unknown - - - 213 - TC1 - Lookup in dependent base classes - Yes - - - 214 - CD1 - Partial ordering of function templates is underspecified - Yes - - - 215 - CD1 - Template parameters are not allowed in nested-name-specifiers - Yes - 216 CD1 Linkage of nameless class-scope enumeration types No - - 217 - TC1 - Default arguments for non-template member functions of class templates - Yes - 218 CD1 Specification of Koenig lookup Yes - - 219 - NAD - Cannot defend against destructors that throw exceptions - N/A - 220 CD1 All deallocation functions should be required not to throw N/A - - 221 - CD1 - Must compound assignment operators be member functions? - Yes - - - 222 - CD1 - Sequence points and lvalue-returning operators - Duplicate of 637 - - - 223 - CD3 - The meaning of deprecation - N/A - - - 224 - CD1 - Definition of dependent names - No - 225 NAD Koenig lookup and fundamental types Yes - - 226 - CD1 - Default template arguments for function templates - No - 227 TC1 How many scopes in an if statement? Yes - - 228 - CD1 - Use of template keyword with non-member templates - Yes - 229 NAD Partial specialization of function templates Yes - - 230 - NAD - Calls to pure virtual functions - Yes - 231 NAD @@ -1433,113 +532,41 @@ Is indirection through a null pointer undefined behavior? Not resolved - - 233 - open - References vs pointers in UDC overload resolution - Not resolved - 234 NAD Reuse of base class subobjects N/A - - 235 - TC1 - Assignment vs initialization - N/A - 236 NAD Explicit temporaries and integral constant expressions Yes - - 237 - CD1 - Explicit instantiation and base class members - Duplicate of 470 - - - 238 - CD4 - Precision and accuracy constraints on floating point - Unknown - - - 239 - CD1 - Footnote 116 and Koenig lookup - Yes - 240 CD3 Uninitialized values and undefined behavior Duplicate of 616 - - 241 - TC1 - Error in example in 14.8.1 - Yes - 242 CD4 Interpretation of old-style casts Unknown - - 243 - NAD - Weighting of conversion functions in direct-initialization - Yes - - - 244 - CD1 - Destructor lookup - Clang 11 - 245 CD1 Name lookup in elaborated-type-specifiers Yes - - 246 - CD1 - Jumps in function-try-block handlers - Yes - - - 247 - NAD - Pointer-to-member casts and function overload resolution - Yes - 248 C++11 Identifier characters - Superseded by P1949 - - - 249 - TC1 - What is a member function template? - Yes - - - 250 - TC1 - Address of function template specialization with non-deduced template arguments - Yes + Superseded by P1949 251 @@ -1547,108 +574,36 @@ How many signed integer types are there? Not resolved - - 252 - CD1 - Looking up deallocation functions in virtual destructors - Yes - - - 253 - C++17 - Why must empty or fully-initialized const objects be initialized? - Unknown - 254 CD1 Definitional problems with elaborated-type-specifiers Yes - - 255 - drafting - Placement deallocation functions and lookup ambiguity - Not resolved - 256 CD1 Overflow in size calculations Duplicate of 624 - - 257 - CD2 - Abstract base constructors and virtual base initialization - Yes - - - 258 - CD1 - using-declarations and cv-qualifiers - Yes - - - 259 - CD1 - Restrictions on explicit specialization and instantiation - Clang 4 - - - 260 - open - User-defined conversions and built-in operator= - Not resolved - 261 CD1 When is a deallocation function "used?" No - - 262 - CD1 - Default arguments and ellipsis - Yes - - - 263 - CD1 - Can a constructor be declared a friend? - Yes - - - 264 - open - Unusable template constructors and conversion functions - Not resolved - 265 dup Destructors, exceptions, and deallocation Duplicate of 353 - - 266 - NAD - No grammar sentence symbol - N/A - 267 open Alignment requirement for new-expressions Not resolved - - 268 - open - Macro name suppression in rescanned replacement text - Not resolved - 269 NAD @@ -1662,71 +617,29 @@ Order of initialization of static data members of class templates N/A - - 271 - open - Explicit instantiation and template argument deduction - Not resolved - - - 272 - CD1 - Explicit destructor invocation and qualified-ids - Yes - - - 273 - CD1 - POD classes and operator&() - Yes - 274 CD1 Cv-qualification and char-alias access to out-of-lifetime objects N/A - - 275 - CD1 - Explicit instantiation/specialization and using-directives - No - 276 CD1 Order of destruction of parameters and temporaries N/A - - 277 - CD1 - Zero-initialization of pointers - Yes - - + 278 - open + NAD External linkage and nameless entities - Not resolved + Unknown - + 279 - open + DRWP Correspondence of "names for linkage purposes" - Not resolved - - - 280 - CD1 - Access and surrogate call functions - Yes - - - 281 - CD1 - inline specifier in friend declarations - No + Unknown 282 @@ -1734,36 +647,12 @@ Namespace for extended_type_info Not resolved - - 283 - CD1 - Template type-parameters are not syntactically type-names - Yes - - - 284 - CD1 - qualified-ids in class declarations - No - - - 285 - NAD - Identifying a function template being specialized - Yes - 286 CD1 Incorrect example in partial specialization Yes - - 287 - drafting - Order dependencies in template instantiation - Not resolved - 288 CD1 @@ -1782,48 +671,18 @@ Should memcpy be allowed into a POD with a const member? N/A - - 291 - CD1 - Overload resolution needed when binding reference to class rvalue - Duplicate of 391 - 292 CD3 Deallocation on exception in new before arguments evaluated Unknown - - 293 - open - Syntax of explicit instantiation/specialization too permissive - Not resolved - 294 NAD Can static_cast drop exception specifications? No - - 295 - CD1 - cv-qualifiers on function types - Clang 3.7 - - - 296 - CD1 - Can conversion functions be static? - Yes - - - 297 - open - Which template does an explicit specialization specialize? - Not resolved - 298 CD1 @@ -1836,36 +695,12 @@ Conversion on array bound expression in new Yes (C++11 onwards) - - 300 - CD1 - References to functions in template argument deduction - Yes - - - 301 - CD1 - Syntax for template-name - Yes - - - 302 - CD1 - Value-initialization and generation of default constructor - Yes - 303 NAD Integral promotions on bit-fields N/A - - 304 - TC1 - Value-initialization of a reference - Yes - 305 CD1 @@ -1878,36 +713,6 @@ Ambiguity by class name injection Duplicate of 39 - - 307 - NAD - Initialization of a virtual base class subobject - N/A - - - 308 - NAD - Catching exceptions with ambiguous base classes - Yes - - - 309 - CD1 - Linkage of entities whose names are not simply identifiers, in introduction - Duplicate of 485 - - - 310 - open - Can function templates differing only in parameter cv-qualifiers be overloaded? - Not resolved - - - 311 - NAD - Using qualified name to reopen nested namespace - Yes - 312 CD3 @@ -1920,30 +725,6 @@ Class with single conversion function to integral as array size in new Duplicate of 299 (C++11 onwards) - - 314 - C++17 - template in base class specifier - Unknown - - - 315 - NAD - Is call of static member function through null pointer undefined? - N/A - - - 316 - NAD - Injected-class-name of template used as template template parameter - Superseded by 1004 - - - 317 - CD1 - Can a function be declared inline after it has been called? - Clang 3.5 - 318 CD1 @@ -1968,107 +749,23 @@ Associated classes and namespaces for argument-dependent lookup Duplicate of 557 - - 322 - CD1 - Deduction of reference conversions - Yes - - - 323 - CD1 - Where must export appear? - No - 324 CD1 Can "&" be applied to assignment to bit-field? Yes - - 325 - drafting - When are default arguments parsed? - Not resolved - - - 326 - CD1 - Wording for definition of trivial constructor - Yes - - - 327 - CD1 - Use of "structure" without definition - Duplicate of 538 - - - 328 - CD1 - Missing requirement that class member types be complete - Yes - - - 329 - CD1 - Evaluation of friends of templates - Clang 3.5 - 330 CD4 Qualification conversions and pointers to arrays of pointers Clang 7 - - 331 - CD1 - Allowed copy constructor signatures - Yes - - - 332 - CD3 - cv-qualified void parameter types - Duplicate of 577 - - - 333 - NAD - Ambiguous use of "declaration" in disambiguation section - Yes - - - 334 - NAD - Is a comma-expression dependent if its first operand is? - Yes - - - 335 - CD1 - Allowing export on template members of nontemplate classes - No - - - 336 - CD1 - Explicit specialization examples are still incorrect - Yes - - - 337 - CD1 - Attempt to create array of abtract type should cause deduction to fail - Yes - - + 338 - open + DRWP Enumerator name with linkage used as class name in other translation unit - Not resolved + Unknown 339 @@ -2076,156 +773,42 @@ Overload resolution in operand of sizeof in constant expression Yes - - 340 - NAD - Unclear wording in disambiguation section - Yes - - - 341 - C++11 - extern "C" namespace member function versus global variable - Superseded by 1708 - 342 CD3 Terminology: "indirection" versus "dereference" N/A - - 343 - C++17 - Make template optional in contexts that require a type - Unknown - - - 344 - CD3 - Naming destructors - Duplicate of 1435 - - - 345 - CD1 - Misleading comment on example in templates chapter - Yes - - - 346 - NAD - Typo in 15.4 - N/A - - - 347 - NAD - Use of derived class name in defining base class nested class - Yes - 348 CD1 delete and user-written deallocation functions N/A - - 349 - CD1 - Template argument deduction for conversion functions and qualification conversions - No - 350 open signed char underlying representation for objects Not resolved - - 351 - CD1 - Sequence point error: unspecified or undefined? - N/A - - - 352 - CD1 - Nondeduced contexts - Yes - 353 CD1 Is deallocation routine called if destructor throws exception in delete? Unknown - - 354 - CD1 - Null as nontype template argument - Yes (C++11 onwards) - - - 355 - C++11 - Global-scope :: in nested-name-specifier - Yes - 356 NAD Wording of behavior of generated copy constructor for scalar members N/A - - 357 - CD1 - Definition of signature should include name - Yes - - - 358 - NAD - Namespaces and extern "C" - Yes - - - 359 - NAD - Type definition in anonymous union - Yes - - - 360 - open - Using-declaration that reduces access - Not resolved - - - 361 - open - Forward reference to default argument - Not resolved - 362 CD1 Order of initialization in instantiation units N/A - - 363 - NAD - Initialization of class from self - N/A - - - 364 - CD1 - Calling overloaded function with static in set, with no object - Yes - 365 open @@ -2244,78 +827,30 @@ throw operator allowed in constant expression? Yes - - 368 - CD1 - Uses of non-type parameters that should cause deduction to fail - Yes - 369 drafting Are new/delete identifiers or preprocessing-op-or-punc? Not resolved - - 370 - CD1 - Can #include <...> form be used other than for standard C++ headers? - N/A - 371 open Interleaving of constructor calls Not resolved - - 372 - CD1 - Is access granted by base class specifiers available in following base class specifiers? - No - 373 C++11 Lookup on namespace qualified name in using-directive Clang 5 - - 374 - CD2 - Can explicit specialization outside namespace use qualified name? - Yes - - - 375 - dup - Confusing example on lookup with typename - Duplicate of 345 - - - 376 - NAD - Class "definition" versus class "declaration" - N/A - - - 377 - CD1 - Enum whose enumerators will not fit in any integral type - Yes - 378 CD1 Wording that says temporaries are declared Duplicate of 276 - - 379 - CD1 - Change "class declaration" to "class definition" - N/A - 380 open @@ -2328,197 +863,59 @@ Incorrect example of base class member lookup Yes - - 382 - CD1 - Allow typename outside of templates - Yes (C++11 onwards) - - - 383 - CD1 - Is a class with a declared but not defined destructor a POD? - Yes - 384 NAD Argument-dependent lookup and operator functions Yes - - 385 - CD1 - How does protected member check of 11.5 interact with using-declarations? - Yes - - - 386 - drafting - Friend declaration of name brought in by using-declaration - Not resolved - 387 CD1 Errors in example in 14.6.5 Yes - - 388 - CD3 - Catching base*& from a throw of derived* - Unknown - 389 CD1 Unnamed types in entities with linkage No - - 390 - CD1 - Pure virtual must be defined when implicitly called - Yes - - - 391 - CD1 - Require direct binding of short-lived references to rvalues - Yes (C++11 onwards) - 392 CD1 Use of full expression lvalue before temporary destruction Unknown - - 393 - CD4 - Pointer to array of unknown bound in template argument list in parameter - Unknown - - - 394 + + 400 CD1 - identifier-list is never defined - N/A - - - 395 - NAD - Conversion operator template syntax + Using-declarations and the "struct hack" Yes - - 396 + + 403 CD1 - Misleading note regarding use of auto for disambiguation + Reference to a type as a template-id Yes - - 397 - CD1 - Same address for string literals from default arguments in inline functions? - Superseded by 1823 - - - 398 - CD1 - Ambiguous wording on naming a type in deduction - Yes - - - 399 - drafting - Destructor lookup redux - Not resolved - - - 400 - CD1 - Using-declarations and the "struct hack" - Yes - - - 401 - CD1 - When is access for template parameter default arguments checked? - Yes - - - 402 - open - More on partial ordering of function templates - Not resolved - - - 403 - CD1 - Reference to a type as a template-id - Yes - - - 404 + + 404 CD1 Unclear reference to construction with non-trivial constructor N/A - + 405 - open + DRWP Unqualified function name lookup - Not resolved - - - 406 - CD1 - Static data member in class with name for linkage purposes - Yes - - - 407 - C++11 - Named class with associated typedef: two names or one? - Clang 3.8 - - - 408 - CD2 - sizeof applied to unknown-bound array static data member of template - Clang 3.4 - - - 409 - CD1 - Obsolete paragraph missed by changes for issue 224 - Yes - - - 410 - CD1 - Paragraph missed in changes for issue 166 - No + Unknown - + 411 - open + WP Use of universal-character-name in character versus string literals - Not resolved - - - 412 - NAD - Can a replacement allocation function be inline? - Yes - - - 413 - CD1 - Definition of "empty class" - Yes + Unknown 414 @@ -2526,72 +923,18 @@ Multiple types found on destructor lookup Duplicate of 305 - - 415 - CD1 - Template deduction does not cause instantiation - Yes - - - 416 - CD1 - Class must be complete to allow operator lookup? - Yes - - - 417 - CD1 - Using derived-class qualified name in out-of-class nested class definition - No - - - 418 - open - Imperfect wording on error on multiple default arguments on a called function - Not resolved - 419 open Can cast to virtual base class be done on partially-constructed object? Not resolved - - 420 - CD1 - postfixexpression->scalar_type_dtor() inconsistent - Yes - 421 CD1 Is rvalue.field an rvalue? Yes - - 422 - NAD - Is a typedef redeclaration allowed with a template type that might be the same? - Yes - - - 423 - NAD - Can a conversion be done on the left operand of a compound assignment? - Yes - - - 424 - CD1 - Wording problem with issue 56 resolution on redeclaring typedefs in class scope - Yes - - - 425 - CD1 - Set of candidates for overloaded built-in operator with float operand - Yes - 426 C++17 @@ -2604,30 +947,12 @@ static_cast ambiguity: conversion versus cast to derived Yes - - 428 - CD1 - Mention of expression with reference type - Yes - 429 CD1 Matching deallocation function chosen based on syntax or signature? Yes (C++11 onwards) - - 430 - CD1 - Ordering of expression evaluation in initializer list - Yes (C++11 onwards) - - - 431 - C++11 - Defect in wording in 14.2 - Yes - 432 CD1 @@ -2640,48 +965,12 @@ Do elaborated type specifiers in templates inject into enclosing namespace scope? Yes - - 434 - NAD - Unclear suppression of standard conversions while binding reference to lvalue - Superseded by 2352 - - - 435 - NAD - Change "declararation or definition" to "declaration" - N/A - - - 436 - CD1 - Problem in example in 9.6 paragraph 4 - Yes - - - 437 - CD1 - Is type of class allowed in member function exception specification? - Superseded by 1308 - - - 438 - CD2 - Possible flaw in wording for multiple accesses to object between sequence points - Unknown - 439 CD1 Guarantees on casting pointer back to cv-qualified version of original type Unknown - - 440 - open - Allow implicit pointer-to-member conversion on nontype template argument - Not resolved - 441 CD1 @@ -2706,72 +995,18 @@ Overriding and the generated copy assignment operator Yes - - 445 - NAD - Wording issue on friend declarations - Yes - 446 CD1 Does an lvalue-to-rvalue conversion on the "?" operator produce a temporary? Yes - - 447 - CD1 - Is offsetof type-dependent? - Yes - - - 448 - C++11 - Set of template functions in call with dependent explicit argument - Yes - - - 449 - NAD - Consistency in use of hyphen with names of "non" entities - N/A - - - 450 - CD1 - Binding a reference to const to a cv-qualified array rvalue - Yes - - - 451 - CD1 - Expressions with invalid results and ill-formedness - Yes - 452 CD1 Wording nit on description of this Yes - - 453 - drafting - References may only bind to “valid” objects - Not resolved - - - 454 - CD1 - When is a definition of a static data member required? - Unknown - - - 455 - drafting - Partial ordering and non-deduced arguments - Not resolved - 456 NAD @@ -2784,30 +1019,6 @@ Wording nit on use of const variables in constant expressions Yes - - 458 - C++11 - Hiding of member template parameters by other members - Clang 11 - - - 459 - open - Hiding of template parameters by base class members - Not resolved - - - 460 - CD1 - Can a using-declaration name a namespace? - Yes - - - 461 - NAD - Make asm conditionally-supported - N/A - 462 CD3 @@ -2844,36 +1055,6 @@ Jump past initialization of local static variable Yes - - 468 - CD1 - Allow ::template outside of templates - Yes (C++11 onwards) - - - 469 - NAD - Const template specializations and reference arguments - No - - - 470 - CD1 - Instantiation of members of an explicitly-instantiated class template - Yes - - - 471 - NAD - Conflicting inherited access specifications - Yes - - - 472 - drafting - Casting across protected inheritance - Not resolved - 473 open @@ -2886,36 +1067,12 @@ Block-scope extern declarations in namespace members Yes - - 475 - C++11 - When is std::uncaught_exception() true? (take 2) - Unknown - 476 extension Determining the buffer size for placement new Extension - - 477 - CD1 - Can virtual appear in a friend declaration? - Clang 3.5 - - - 478 - NAD - May a function parameter be an array of an abstract class type? - Yes - - - 479 - CD1 - Copy elision in exception handling - Yes - 480 CD1 @@ -2928,90 +1085,30 @@ Scope of template parameters Yes - - 482 - CD3 - Qualified declarators in redeclarations - Clang 3.5 - 483 CD3 Normative requirements on integral ranges Yes - - 484 - CD1 - Can a base-specifier name a cv-qualified class type? - Yes - - - 485 - CD1 - What is a “name”? - Yes - - - 486 - CD1 - Invalid return types and template argument deduction - Yes - 487 NAD Operator overloading in constant expressions Yes - - 488 - CD1 - Local types, overload resolution, and template argument deduction - Yes (C++11 onwards) - - - 489 - NAD - Must member function templates be instantiated during overload resolution? - N/A - 490 CD2 Name lookup in friend declarations Yes - - 491 - CD1 - Initializers for empty-class aggregrate members - Duplicate of 413 - 492 CD1 typeid constness inconsistent with example Unknown - - 493 - CD2 - Type deduction from a bool context - Duplicate of 976 - - - 494 - CD1 - Problems with the resolution of issue 45 - Duplicate of 372 - - - 495 - CD2 - Overload resolution with template and non-template conversion functions - Clang 3.5 - 496 CD3 @@ -3030,42 +1127,6 @@ Storage class specifiers in definitions of class members Not resolved - - 499 - CD2 - Throwing an array of unknown size - Yes - - - 500 - CD1 - Access in base-specifiers of friend and nested classes - Duplicate of 372 - - - 501 - NAD - Visibility of friend declarations within the befriending class - Yes - - - 502 - C++11 - Dependency of nested enumerations and enumerators - Yes - - - 503 - open - Cv-qualified function types in template argument deduction - Not resolved - - - 504 - open - Should use of a variable in its own initializer require a diagnostic? - Not resolved - 505 CD1 @@ -3078,42 +1139,6 @@ Conditionally-supported behavior for non-POD objects passed to ellipsis Yes - - 507 - dup - Ambiguity assigning class object to built-in type - Duplicate of 260 - - - 508 - C++11 - Non-constructed value-initialized objects - N/A - - - 509 - CD1 - Dead code in the specification of default initialization - N/A - - - 510 - CD1 - Default initialization of POD classes? - N/A - - - 511 - open - POD-structs with template assignment operators - Not resolved - - - 512 - NAD - Union members with user-declared non-default constructors - Yes - 513 CD1 @@ -3126,30 +1151,12 @@ Is the initializer for a namespace member in the scope of the namespace? Yes - - 515 - CD1 - Non-dependent references to base class members - Superseded by 1017 - - - 516 - CD1 - Use of signed in bit-field declarations - N/A - 517 CD1 Partial specialization following explicit instantiation No - - 518 - CD1 - Trailing comma following enumerator-list - Yes (C++11 onwards) - 519 CD1 @@ -3168,36 +1175,12 @@ Requirements for exceptions thrown by allocation functions No - - 522 - CD1 - Array-to-pointer decay in template argument deduction - Yes - 523 open Can a one-past-the-end pointer be invalidated by deleting an adjacent object? Not resolved - - 524 - CD1 - Can function-notation calls to operator functions be dependent? - Yes - - - 525 - CD1 - Missing * in example - Yes - - - 526 - CD1 - Confusing aspects in the specification of non-deduced contexts - Yes - 527 CD2 @@ -3210,127 +1193,23 @@ Why are incomplete class types not allowed with typeid? Not resolved - - 529 - drafting - Use of template<> with “explicitly-specialized” class templates - Not resolved - 530 CD1 Nontype template arguments in constant expressions Yes - - 531 - C++11 - Defining members of explicit specializations - Partial - - - 532 - C++11 - Member/nonmember operator template partial ordering - Clang 3.5 - - - 533 - NAD - Special treatment for C-style header names - N/A - - - 534 - CD1 - template-names and operator-function-ids - Yes - 535 CD3 Copy construction without a copy constructor Yes - + 536 - drafting + DRWP Problems in the description of id-expressions - Not resolved - - - 537 - CD1 - Definition of “signature” - N/A - - - 538 - CD1 - Definition and usage -of structure, POD-struct, POD-union, -and POD class - N/A - - - 539 - CD3 - Constraints on type-specifier-seq - Yes - - - 540 - CD1 - Propagation of cv-qualifiers in reference-to-reference collapse - Yes - - - 541 - CD2 - Dependent function types - Yes - - - 542 - CD2 - Value initialization of arrays of POD-structs - Yes - - - 543 - CD1 - Value initialization and default constructors - Yes - - - 544 - NAD - Base class lookup in explicit specialization - Yes - - - 545 - open - User-defined conversions and built-in operator overload resolution - Not resolved - - - 546 - C++11 - Explicit instantiation of class template members - Yes - - - 547 - C++11 - Partial specialization on member function types - Yes - - - 548 - dup - qualified-ids in declarations - Duplicate of 482 + Unknown 549 @@ -3338,41 +1217,23 @@ Non-deducible parameters in partial specializations Not resolved - - 550 - dup - Pointer to array of unknown bound in parameter declarations - Unknown - - - 551 - CD1 - When is inline permitted in an explicit instantiation? - Yes (C++11 onwards) - - - 552 - NAD - Use of typename in the type in a non-type parameter-declaration - Yes - 553 NAD Problems with friend allocation and deallocation functions Unknown - + 554 - drafting + DRWP Definition of “declarative region” and “scope” - Not resolved + Unknown - + 555 - drafting + CD5 Pseudo-destructor name lookup - Not resolved + Unknown 556 @@ -3392,47 +1253,11 @@ Excluded characters in universal character names Yes - - 559 - CD1 - Editing error in issue 382 resolution - Yes - - - 560 - drafting - Use of the typename keyword in return types - Not resolved - - - 561 - CD2 - Internal linkage functions in dependent name lookup - Yes - - + 562 - open + DRWP qualified-ids in non-expression contexts - Not resolved - - - 563 - open - Linkage specification for objects - Not resolved - - - 564 - CD2 - Agreement of language linkage or linkage-specifications? - Yes - - - 565 - CD3 - Conflict rules for using-declarations naming function templates - Yes + Unknown 566 @@ -3446,18 +1271,6 @@ Can size_t and ptrdiff_t be larger than long? N/A - - 568 - CD1 - Definition of POD is too strict - Yes (C++11 onwards) - - - 569 - CD2 - Spurious semicolons at namespace scope should be allowed - Yes (C++11 onwards) - 570 CD2 @@ -3488,54 +1301,12 @@ Definition of “copy assignment operator” Yes - - 575 - C++11 - Criteria for deduction failure - Yes - - - 576 - CD2 - Typedefs in function definitions - Yes - - - 577 - CD3 - void in an empty parameter list - Yes - 578 open Phase 1 replacement of characters with universal-character-names Not resolved - - 579 - open - What is a “nested” > or >>? - Not resolved - - - 580 - C++11 - Access in template-parameters of member and friend definitions - Partial - - - 581 - DRWP - Can a templated constructor be explicitly instantiated or specialized? - Unknown - - - 582 - CD1 - Template conversion functions - N/A - 583 CD3 @@ -3548,72 +1319,18 @@ Unions and aliasing N/A - - 585 - NAD - Friend template template parameters - Yes - - - 586 - NAD - Default template-arguments and template argument deduction - N/A - 587 CD2 Lvalue operands of a conditional expression differing only in cv-qualification Yes - - 588 - CD2 - Searching dependent bases of classes local to function templates - Yes - - - 589 - CD2 - Direct binding of class and array rvalues in reference initialization - Yes - - - 590 - C++11 - Nested classes and the “current instantiation” - Yes - - - 591 - CD4 - When a dependent base class is the current instantiation - No - - - 592 - CD1 - Exceptions during construction of local static objects - N/A - - - 593 - NAD - Falling off the end of a destructor's function-try-block handler - Unknown - 594 CD1 Coordinating issues 119 and 404 with delegating constructors N/A - - 595 - dup - Exception specifications in templates instantiated from class bodies - Duplicate of 1330 - 596 NAD @@ -3638,119 +1355,29 @@ Deleting a null function pointer Partial - - 600 - open - Does access control apply to members or to names? - Not resolved - - - 601 - CD2 - Type of literals in preprocessing expressions - Yes - - - 602 - C++11 - When is the injected-class-name of a class template a template? - Yes - - - 603 - CD1 - Type equivalence and unsigned overflow - Yes - - - 604 - CD2 - Argument list for overload resolution in copy-initialization - N/A - - - 605 - C++11 - Linkage of explicit specializations - Unknown - - - 606 - CD1 - Template argument deduction for rvalue references - Yes - - - 607 - open - Lookup of mem-initializer-ids - Not resolved - - - 608 - CD2 - Determining the final overrider of a virtual function - Yes - - - 609 - CD4 - What is a “top-level” cv-qualifier? - Unknown - 610 NAD Computing the negative of 0U Yes - - 611 - CD2 - Zero-initializing references - Yes - 612 CD2 Requirements on a conforming implementation N/A - - 613 - CD1 - Unevaluated uses of non-static class members - Yes (C++11 onwards) - 614 CD1 Results of integer / and % Yes - - 615 - C++11 - Incorrect description of variables that can be initialized - Yes - - - 616 - CD3 - Definition of “indeterminate value” - Clang 4 - - + 617 - drafting + NAD Lvalue-to-rvalue conversions of uninitialized char objects - Not resolved - - - 618 - CD2 - Casts in preprocessor conditional expressions - Yes + Unknown 619 @@ -3758,18 +1385,6 @@ Completeness of array types Yes - - 620 - CD1 - Declaration order in layout-compatible POD structs - Duplicate of 568 - - - 621 - C++11 - Template argument deduction from function return types - Unknown - 622 NAD @@ -3788,36 +1403,12 @@ Overflow in calculating size of allocation Unknown - - 625 - CD2 - Use of auto as a template-argument - Yes - - - 626 - CD2 - Preprocessor string literals - Yes - 627 NAD Values behaving as types Yes - - 628 - CD2 - The values of an enumeration with no enumerator - N/A - - - 629 - CD1 - auto parsing ambiguity - Yes - 630 CD2 @@ -3830,18 +1421,6 @@ Jumping into a “then” clause N/A - - 632 - CD1 - Brace-enclosed initializer for scalar member of aggregate - Yes - - - 633 - CD2 - Specifications for variables that should also apply to references - N/A - 634 CD1 @@ -3866,12 +1445,6 @@ Sequencing rules and example disagree Yes - - 638 - CD2 - Explicit specialization and friendship - No - 639 CD1 @@ -3884,54 +1457,24 @@ Accessing destroyed local objects of static storage duration Not resolved - - 641 - CD2 - Overload resolution and conversion-to-same-type operators - Yes - 642 CD2 Definition and use of “block scope” and “local scope” Yes - - 643 - NAD - Use of decltype in a class member-specification - Yes - 644 CD1 Should a trivial class type be a literal type? Partial - - 645 - CD2 - Are bit-field and non-bit-field members layout compatible? - N/A - 646 NAD Can a class with a constexpr copy constructor be a literal type? Superseded by 981 - - 647 - CD1 - Non-constexpr instances of constexpr constructor templates - Yes - - - 648 - CD1 - Constant expressions in constexpr initializers - Yes - 649 CD1 @@ -3944,12 +1487,6 @@ Order of destruction for temporaries bound to the returned value of a function Unknown - - 651 - CD1 - Problems in decltype specification and examples - Yes - 652 CD2 @@ -3968,24 +1505,6 @@ Conversions to and from nullptr_t Superseded by 1423 - - 655 - C++11 - Initialization not specified for forwarding constructors - Yes - - - 656 - CD2 - Direct binding to the result of a conversion operator - Yes - - - 657 - CD2 - Abstract class parameter in synthesized declaration - Partial - 658 CD2 @@ -3998,35 +1517,17 @@ Alignment of function types Yes - - 660 - CD1 - Unnamed scoped enumerations - Yes - 661 CD1 Semantics of arithmetic comparisons Unknown - - 662 - NAD - Forming a pointer to a reference type - Yes - 663 CD1 Valid Cyrillic identifier characters - Superseded by P1949 - - - 664 - CD2 - Direct binding of references to non-class rvalue references - Yes + Superseded by P1949 665 @@ -4034,36 +1535,12 @@ Problems in the specification of dynamic_cast Yes - - 666 - CD1 - Dependent qualified-ids without the typename keyword - Yes - 667 CD2 Trivial special member functions that cannot be implicitly defined Yes - - 668 - CD2 - Throwing an exception from the destructor of a local static object - Unknown - - - 669 - NAD - Confusing specification of the meaning of decltype - Yes - - - 670 - open - Copy initialization via derived-to-base conversion in the second step - Not resolved - 671 CD1 @@ -4082,57 +1559,27 @@ Injection of names from elaborated-type-specifiers in friend declarations Yes - - 674 - C++11 - “matching specialization” for a friend declaration - Clang 8 - - - 675 - CD3 - Signedness of bit-field with typedef or template parameter type - Duplicate of 739 - 676 C++11 static_assert-declarations and general requirements for declarations N/A - - 677 - CD1 - Deleted operator delete and virtual destructors - No - 678 C++11 Language linkage of member function parameter types and the ODR Unknown - - 679 - CD1 - Equivalence of template-ids and operator function templates - Yes - 680 CD2 What is a move constructor? N/A - - 681 - CD1 - Restrictions on declarators with late-specified return types - Partial - 682 - DRWP + CD5 Missing description of lookup of template aliases Unknown @@ -4154,12 +1601,6 @@ Integral promotion of enumeration ignores fixed underlying type Yes - - 686 - CD1 - Type declarations/definitions in type-specifier-seqs and type-ids - Yes - 687 extension @@ -4178,108 +1619,24 @@ Maximum values of signed and unsigned integers Not resolved - - 690 - CD2 - The dynamic type of an rvalue reference - Unknown - - - 691 - C++11 - Template parameter packs in class template partial specializations - Unknown - - - 692 - C++11 - Partial ordering of variadic class template partial specializations - No - 693 CD2 New string types and deprecated conversion Unknown - - 694 - C++11 - Zero- and value-initialization of union objects - Unknown - - - 695 - CD2 - Compile-time calculation errors in constexpr functions - Unknown - - - 696 - C++11 - Use of block-scope constants in local classes - Yes - - - 697 - open - Deduction rules apply to more than functions - Not resolved - 698 open The definition of “sequenced before” is too narrow Not resolved - - 699 - CD2 - Must constexpr member functions be defined in the class member-specification? - Unknown - - - 700 - C++11 - Constexpr member functions of class templates - Unknown - - - 701 - CD2 - When is the array-to-pointer conversion applied? - Unknown - - - 702 - CD2 - Preferring conversion to std::initializer_list - Unknown - - - 703 - CD2 - Narrowing for literals that cannot be exactly represented - Unknown - - - 704 - CD2 - To which postfix-expressions does overload resolution apply? - Unknown - 705 CD2 Suppressing argument-dependent lookup via parentheses Yes - - 706 - NAD - Use of auto with rvalue references - Unknown - 707 CD2 @@ -4292,72 +1649,24 @@ Partial specialization of member templates of class templates Not resolved - - 709 - C++11 - Enumeration names as nested-name-specifiers in deduction failure - Unknown - - - 710 - CD2 - Data races during construction - Unknown - - - 711 - CD2 - auto with braced-init-list - Unknown - 712 CD3 Are integer constant operands of a conditional-expression “used?” Partial - - 713 - CD2 - Unclear note about cv-qualified function types - Unknown - - - 714 - CD2 - Static const data members and braced-init-lists - Unknown - 715 CD2 Class member access constant expressions Unknown - - 716 - CD2 - Specifications that should apply only to non-static union data members - Unknown - 717 CD2 Unintentional restrictions on the use of thread_local Unknown - - 718 - open - Non-class, non-function friend declarations - Not resolved - - - 719 - CD2 - Specifications for operator-function-id that should also apply to literal-operator-id - Unknown - 720 CD2 @@ -4382,42 +1691,12 @@ Atomic and non-atomic objects in the memory model Unknown - - 727 - C++17 - In-class explicit specializations - Partial - - - 728 - extension - Restrictions on local classes - Extension - - - 729 - CD3 - Qualification conversions and handlers of reference-to-pointer type - Unknown - - - 730 - CD2 - Explicit specializations of members of non-template classes - Unknown - 731 CD2 Omitted reference qualification of member function type Unknown - - 732 - CD2 - Late-specified return types in function definitions - Unknown - 733 NAD @@ -4436,42 +1715,12 @@ Missing case in specification of safely-derived pointers Unknown - - 736 - NAD - Is the & ref-qualifier needed? - Unknown - - - 737 - CD2 - Uninitialized trailing characters in string initialization - Unknown - - - 738 - C++11 - constexpr not permitted by the syntax of constructor declarations - Unknown - - - 739 - CD3 - Signedness of plain bit-fields - Unknown - 740 CD2 Incorrect note on data races Unknown - - 741 - C++11 - “plain” long long bit-fields - Unknown - 742 open @@ -4484,36 +1733,6 @@ Use of decltype in a nested-name-specifier Unknown - - 744 - CD2 - Matching template arguments with template template parameters with parameter packs - Unknown - - - 745 - open - Effect of ill-formedness resulting from #error - Not resolved - - - 746 - CD2 - Use of auto in new-expressions - Unknown - - - 747 - dup - Access of protected base classes - Unknown - - - 749 - CD2 - References to function types with a cv-qualifier or ref-qualifier - Unknown - 750 CD2 @@ -4604,12 +1823,6 @@ Capturing unused variables in a lambda expression Unknown - - 765 - CD2 - Local types in inline functions with external linkage - Unknown - 766 CD2 @@ -4634,12 +1847,6 @@ Initialization of closure objects Unknown - - 770 - CD2 - Ambiguity in late-specified return type - Unknown - 771 CD2 @@ -4652,12 +1859,6 @@ capture-default in lambdas in local default arguments Unknown - - 773 - C++11 - Parentheses in address non-type template arguments - Unknown - 774 CD2 @@ -4676,18 +1877,6 @@ Delegating constructors, destructors, and std::exit Unknown - - 777 - CD2 - Default arguments and parameter packs - Clang 3.7 - - - 778 - C++11 - Template parameter packs in non-type template parameters - Unknown - 779 CD2 @@ -4700,12 +1889,6 @@ Lambda expressions and argument-dependent lookup Unknown - - 783 - open - Definition of “argument” - Not resolved - 784 C++11 @@ -4856,36 +2039,6 @@ Block-scope thread_local variables should be implicitly static Unknown - - 811 - CD2 - Unclear implications of const-qualification - Unknown - - - 812 - CD2 - Duplicate names in inline namespaces - Unknown - - - 813 - open - typename in a using-declaration with a non-dependent name - Not resolved - - - 814 - CD2 - Attribute to indicate that a function throws nothing - Unknown - - - 815 - CD2 - Parameter pack expansion inside attributes - Unknown - 816 CD2 @@ -4898,60 +2051,6 @@ Meaning of [[final]] applied to a class definition Unknown - - 818 - CD2 - Function parameter packs in non-final positions - Unknown - - - 819 - NAD - Access control and deleted implicitly-declared special member functions - Unknown - - - 820 - CD2 - Deprecation of export - Unknown - - - 822 - NAD - Additional contexts for template aliases - Unknown - - - 823 - CD2 - Literal types with constexpr conversions as non-type template arguments - Unknown - - - 828 - CD2 - Destruction of exception objects - Unknown - - - 829 - NAD - At what point is std::unexpected called? - Unknown - - - 830 - CD2 - Deprecating exception specifications - Unknown - - - 831 - CD2 - Limit on recursively nested template instantiations - Unknown - 832 CD2 @@ -4970,78 +2069,30 @@ What is an “ordinary string literal”? Unknown - - 835 - CD2 - Scoped enumerations and the “usual arithmetic conversions” - Unknown - - - 836 - NAD - [[noreturn]] applied to function types - Unknown - - - 837 - C++11 - Constexpr functions and return braced-init-list - Unknown - - - 838 - C++11 - Use of this in a brace-or-equal-initializer - Unknown - 839 dup sizeof with opaque enumerations Unknown - - 840 - CD2 - Rvalue references as nontype template parameters - Unknown - 842 CD2 Casting to rvalue reference type Unknown - - 845 - CD2 - What is the “first declaration” of an explicit specialization? - Unknown - 846 CD2 Rvalue references to functions Unknown - - 847 - CD2 - Error in rvalue reference deduction example - Unknown - 850 CD2 Restrictions on use of non-static data members Unknown - - 852 - open - using-declarations and dependent base classes - Not resolved - 853 CD2 @@ -5060,30 +2111,12 @@ Incorrect comments in braced-init-list assignment example Unknown - - 858 - CD2 - Example binding an rvalue reference to an lvalue - Unknown - - - 860 - C++11 - Explicit qualification of constexpr member functions - Unknown - 861 CD2 Unintended ambiguity in inline namespace lookup Unknown - - 862 - CD2 - Undefined behavior with enumerator value overflow - Unknown - 863 CD2 @@ -5096,60 +2129,12 @@ braced-init-list in the range-based for statement Unknown - - 865 - CD2 - Initializing a std::initializer_list - Unknown - - - 869 - CD2 - Uninitialized thread_local objects - Unknown - 872 CD2 Lexical issues with raw strings Unknown - - 873 - C++11 - Deducing rvalue references in declarative contexts - Unknown - - - 874 - CD2 - Class-scope definitions of enumeration types - Unknown - - - 876 - CD2 - Type references in rvalue reference deduction specification - Unknown - - - 877 - CD2 - Viable functions and binding references to rvalues - Unknown - - - 879 - CD2 - Missing built-in comparison operators for pointer types - Unknown - - - 880 - CD2 - Built-in conditional operator for scoped enumerations - Unknown - 882 CD2 @@ -5162,78 +2147,18 @@ std::memcpy vs std::memmove Unknown - - 884 - CD2 - Defining an explicitly-specialized static data member - Unknown - - - 885 - NAD - Partial ordering of function templates with unordered parameter pairs - Unknown - - - 886 - CD2 - Member initializers and aggregates - Unknown - 887 CD2 Move construction of thrown object Unknown - - 888 - CD2 - Union member initializers - Unknown - 891 CD2 const_cast to rvalue reference from objectless rvalue Unknown - - 892 - C++11 - Missing requirements for constexpr constructors - Unknown - - - 893 - NAD - Brace syntax for enumerator-definitions - Unknown - - - 896 - CD2 - Rvalue references and rvalue-reference conversion functions - Unknown - - - 897 - open - _Pragma and extended string-literals - Not resolved - - - 898 - C++11 - Declarations in constexpr functions - Unknown - - - 899 - CD2 - Explicit conversion functions in direct class initialization - Unknown - 900 extension @@ -5246,42 +2171,12 @@ Deleted operator delete Not resolved - - 902 - NAD - In-class initialization of non-constant static data members - Unknown - - - 903 - CD3 - Value-dependent integral null pointer constants - Unknown - 904 CD2 Parameter packs in lambda-captures Unknown - - 905 - CD2 - Explicit defaulted copy constructors and trivial copyability - Unknown - - - 906 - CD2 - Which special member functions can be defaulted? - Unknown - - - 908 - CD2 - Deleted global allocation and deallocation functions - Unknown - 909 NAD @@ -5300,96 +2195,18 @@ Character literals and universal-character-names Unknown - - 913 - CD2 - Deduction rules for array- and function-type conversion functions - Unknown - 914 extension Value-initialization of array types Extension - - 915 - CD2 - Deleted specializations of member function templates - Unknown - 916 open Does a reference type have a destructor? Not resolved - - 919 - CD2 - Contradictions regarding inline namespaces - Unknown - - - 920 - CD2 - Interaction of inline namespaces and using-declarations - Unknown - - - 921 - CD2 - Unclear specification of inline namespaces - Unknown - - - 922 - CD2 - Implicit default constructor definitions and const variant members - Unknown - - - 923 - CD2 - Inline explicit specializations - Unknown - - - 924 - C++11 - alias-declaration as a class member - Unknown - - - 925 - open - Type of character literals in preprocessor expressions - Not resolved - - - 926 - CD2 - Inline unnamed namespaces - Unknown - - - 927 - CD2 - Implicitly-deleted default constructors and member initializers - Unknown - - - 928 - CD2 - Defaulting a function that would be implicitly defined as deleted - Unknown - - - 929 - CD2 - What is a template alias? - Unknown - 930 CD2 @@ -5414,63 +2231,21 @@ 32-bit UCNs with 16-bit wchar_t Unknown - - 934 - CD2 - List-initialization of references - Unknown - - - 935 - CD2 - Missing overloads for character types for user-defined literals - Unknown - - - 936 - CD2 - Array initialization with new string literals - Unknown - 937 NAD Restrictions on values of template arguments in user-defined literals Unknown - - 938 - C++11 - Initializer lists and array new - Unknown - - - 939 - CD2 - Explicitly checking virtual function overriding - Unknown - 940 CD2 Global anonymous unions Unknown - - 941 - C++11 - Explicit specialization of deleted function template - Unknown - - - 942 - CD2 - Is this an entity? - Unknown - 943 - DRWP + CD5 Is T() a temporary? Unknown @@ -5492,12 +2267,6 @@ Order of destruction of local static objects and calls to std::atexit Unknown - - 947 - NAD - Deducing type template arguments from default function arguments - Unknown - 948 C++11 @@ -5510,84 +2279,18 @@ Requirements for freestanding implementations Not resolved - - 950 - CD2 - Use of decltype as a class-name - Unknown - - - 951 - CD2 - Problems with attribute-specifiers - Unknown - - - 952 - drafting - Insufficient description of “naming class” - Not resolved - - - 953 - CD2 - Rvalue references and function viability - Unknown - - - 954 - open - Overload resolution of conversion operator templates with built-in types - Not resolved - 955 CD2 Can a closure type's operator() be virtual? Unknown - - 956 - CD2 - Function prototype scope with late-specified return types - Unknown - - - 957 - CD2 - Alternative tokens and attribute-tokens - Unknown - 958 NAD Lambdas and decltype Unknown - - 959 - CD2 - Alignment attribute for class and enumeration types - Unknown - - - 960 - CD2 - Covariant functions and lvalue/rvalue references - Unknown - - - 961 - CD2 - Overload resolution and conversion of std::nullptr_t to bool - Unknown - - - 962 - CD2 - Attributes appertaining to class and enum types - Unknown - 963 CD2 @@ -5600,12 +2303,6 @@ Incorrect description of when the lvalue-to-rvalue conversion applies Unknown - - 965 - CD2 - Limiting the applicability of the carries_dependency attribute - Unknown - 966 CD2 @@ -5618,42 +2315,6 @@ Exception specification of replacement allocation function Unknown - - 968 - CD2 - Syntactic ambiguity of the attribute notation - Unknown - - - 969 - CD2 - Explicit instantiation declarations of class template specializations - Unknown - - - 970 - CD2 - Consistent use of “appertain” and “apply” - Unknown - - - 971 - C++11 - Incorrect treatment of exception-declarations - Unknown - - - 972 - C++11 - Allowing multiple attribute-specifiers - Unknown - - - 973 - CD2 - Function types in exception-specifications - Unknown - 974 CD3 @@ -5666,126 +2327,30 @@ Restrictions on return type deduction for lambdas Unknown - - 976 - CD2 - Deduction for const T& conversion operators - Unknown - - - 977 - CD3 - When is an enumeration type complete? - Unknown - - - 978 - CD2 - Incorrect specification for copy initialization - Unknown - - - 979 - CD2 - Position of attribute-specifier in declarator syntax - Unknown - - - 980 - CD2 - Explicit instantiation of a member of a class template - Unknown - 981 C++11 Constexpr constructor templates and literal types Unknown - - 982 - NAD - Initialization with an empty initializer list - Unknown - 983 CD2 Ambiguous pointer-to-member constant Unknown - - 984 - CD2 - “Deduced type” is unclear in auto type deduction - Unknown - 985 C++11 Alternative tokens and user-defined literals Unknown - - 986 - CD2 - Transitivity of using-directives versus qualified lookup - Unknown - - - 987 - CD4 - Which declarations introduce namespace members? - Unknown - - - 988 - CD2 - Reference-to-reference collapsing with decltype - Unknown - - - 989 - CD2 - Misplaced list-initialization example - Unknown - - - 990 - CD2 - Value initialization with multiple initializer-list constructors - Clang 3.5 - - - 991 - CD2 - Reference parameters of constexpr functions and constructors - Unknown - 992 NAD Inheriting explicitness Unknown - - 993 - C++11 - Freedom to perform instantiation at the end of the translation unit - Unknown - - - 994 - C++11 - braced-init-list as a default argument - Unknown - - - 995 - CD2 - Incorrect example for using-declaration and explicit instantiation - Unknown - 996 C++11 @@ -5798,78 +2363,24 @@ Argument-dependent lookup and dependent function template parameter types Unknown - - 998 - dup - Function parameter transformations and template functions - Unknown - - - 999 - CD2 - “Implicit” or “implied” object argument/parameter? - Unknown - 1000 CD2 Mistaking member typedefs for constructors Unknown - - 1001 - drafting - Parameter type adjustment in dependent parameter types - Not resolved - - - 1002 - NAD - Pack expansion for function arguments - Unknown - 1003 CD3 Acceptable definitions of main Unknown - - 1004 - C++11 - Injected-class-names as arguments for template template parameters - Clang 5 - - - 1005 - NAD - Qualified name resolution in member functions of class templates - Unknown - - - 1006 - C++11 - std::nullptr_t as a non-type template parameter - Unknown - - - 1007 - NAD - Protected access and pointers to members - Unknown - 1008 extension Querying the alignment of an object Extension - - 1009 - C++11 - Missing cases in the declarator-id of a function template declaration - Unknown - 1010 CD2 @@ -5882,54 +2393,18 @@ Standard conversions that cannot be inverted Unknown - - 1012 - C++11 - Undeprecating static - Unknown - 1013 CD3 Uninitialized std::nullptr_t objects Unknown - - 1014 - NAD - Overload resolution between const T& and T&& - Unknown - 1015 C++11 Template arguments and argument-dependent lookup Unknown - - 1016 - C++11 - Overloadable declarations, function templates, and references - Unknown - - - 1017 - C++11 - Member access transformation in unevaluated operands - Unknown - - - 1018 - C++11 - Ambiguity between simple-declaration and attribute-declaration - Unknown - - - 1019 - dup - Dependent simple-template-ids in base-specifiers and mem-initializers - Unknown - 1020 C++11 @@ -5942,30 +2417,12 @@ Definitions of namespace members Unknown - - 1022 - C++11 - Can an enumeration variable have values outside the values of the enumeration? - Unknown - - - 1023 - dup - thread_local objects as non-type template arguments - Unknown - 1024 CD3 Limits on multicharacter literals Unknown - - 1025 - C++11 - Use of a reference as a non-type template argument - Unknown - 1026 NAD @@ -5978,126 +2435,30 @@ Type consistency and reallocation of scalar types Not resolved - - 1028 - open - Dependent names in non-defining declarations - Not resolved - - - 1029 - C++11 - Type of a destructor call - Unknown - - - 1030 - C++11 - Evaluation order in initializer-lists used in aggregate initialization - Unknown - - - 1031 - C++11 - Optional elements in attributes - Unknown - - - 1032 - C++11 - Empty pack expansions - Unknown - - - 1033 - C++11 - Restrictions on alignment attributes - Unknown - 1034 C++11 Attributes for return statements in lambdas Unknown - - 1035 - C++11 - Omitted and required decl-specifiers - Unknown - - - 1036 - C++11 - Alignment attribute in an exception-declaration - Unknown - 1037 C++11 Requirements for operands of delete-expressions and deallocation functions Unknown - - 1038 - open - Overload resolution of &x.static_func - Not resolved - - - 1039 - dup - Coordinating C and C++ alignment specifications - Unknown - 1040 NAD Memory model issues Unknown - - 1041 - dup - alias-declarations as class members - Unknown - - - 1042 - C++11 - Attributes in alias-declarations - Unknown - - - 1043 - C++11 - Qualified name lookup in the current instantiation - Unknown - 1044 C++11 Point of declaration for an alias-declaration Unknown - - 1045 - NAD - Requiring explicit instantiation declarations - Unknown - - - 1046 - open - What is a “use” of a class specialization? - Not resolved - - - 1047 - C++11 - When is typeid value-dependent? - Unknown - 1048 CD3 @@ -6128,12 +2489,6 @@ const non-static data member and PODness Unknown - - 1053 - NAD - Terminate vs undefined behavior for noexcept violation - Unknown - 1054 C++11 @@ -6146,24 +2501,6 @@ Permissible uses of void Unknown - - 1056 - C++11 - Template aliases, member definitions, and the current instantiation - Unknown - - - 1057 - C++11 - decltype and the current instantiation - Unknown - - - 1058 - NAD - Reference binding of incompatible array types - Unknown - 1059 CD3 @@ -6218,57 +2555,15 @@ [[hiding]], using-declarations, and multiple inheritance Unknown - - 1068 - C++11 - Template aliases with default arguments and template parameter packs - Unknown - - - 1069 - C++11 - Incorrect function type with trailing-return-type - Unknown - - - 1070 - C++11 - Missing initializer clauses in aggregate initialization - Clang 3.5 - 1071 C++11 Literal class types and trivial default constructors Unknown - - 1072 - C++11 - Scoped enumerator with the same name as its containing class - Unknown - - - 1073 - C++11 - Merging dynamic-exception-specifications and noexcept-specifications - Unknown - - - 1074 - C++11 - Value-dependent noexcept-expressions - Unknown - - - 1075 - C++11 - Grammar does not allow template alias in type-name - Unknown - 1076 - DRWP + CD5 Value categories and lvalue temporaries Unknown @@ -6278,30 +2573,12 @@ Explicit specializations in non-containing namespaces Extension - - 1078 - NAD - Narrowing and the usual arithmetic conversions - Unknown - - - 1079 - C++11 - Overload resolution involving aggregate initialization - Unknown - 1080 C++11 Confusing relationship between templates and copy constructors Unknown - - 1081 - C++11 - Defaulted destructor and unusable operator delete - Unknown - 1082 C++11 @@ -6332,18 +2609,6 @@ const_cast to rvalue reference to function type Unknown - - 1087 - C++11 - Additional applications of issue 899 - Unknown - - - 1088 - C++11 - Dependent non-type template arguments - Unknown - 1089 drafting @@ -6368,36 +2633,12 @@ Cycles in overload resolution during instantiation Not resolved - - 1093 - CD3 - Value-initializing non-objects - Unknown - 1094 C++11 Converting floating-point values to scoped enumeration types Unknown - - 1095 - C++11 - List-initialization of references - Unknown - - - 1096 - C++11 - Missing requirement for template definitions - Unknown - - - 1097 - NAD - Aggregate initialization of function parameters - Unknown - 1098 C++11 @@ -6416,12 +2657,6 @@ constexpr conversion functions and non-type template arguments Unknown - - 1101 - C++11 - Non-integral initialized static data members - Unknown - 1102 C++11 @@ -6512,12 +2747,6 @@ Aliasing of union members Unknown - - 1117 - C++11 - Incorrect note about xvalue member access expressions - Unknown - 1118 NAD @@ -6584,120 +2813,18 @@ attribute-specifiers in decl-specifier-seqs Unknown - - 1129 - C++11 - Default nothrow for constexpr functions - Unknown - - - 1130 - C++11 - Function parameter type adjustments and decltype - Unknown - - - 1131 - C++11 - Template aliases in elaborated-type-specifiers - Unknown - - - 1132 - NAD - Keyword vs attribute for noreturn - Unknown - 1133 C++11 Keywords vs attributes for control of hiding and overriding Unknown - - 1134 - C++11 - When is an explicitly-defaulted function defined? - Unknown - - - 1135 - C++11 - Explicitly-defaulted non-public special member functions - Unknown - - - 1136 - C++11 - Explicitly-defaulted explicit constructors - Unknown - - - 1137 - C++11 - Explicitly-defaulted virtual special member functions - Unknown - - - 1138 - C++11 - Rvalue-ness check for rvalue reference binding is wrong - Unknown - - - 1139 - C++11 - Rvalue reference binding to scalar xvalues - Unknown - - - 1140 - C++11 - Incorrect redefinition of POD class - Unknown - - - 1141 - NAD - Non-static data member initializers have not been implemented - Unknown - - - 1142 - C++11 - friend declaration of member function of containing class - Unknown - - - 1143 - NAD - Move semantics for *this have not been implemented - Unknown - 1144 C++11 Remove access declarations Unknown - - 1145 - C++11 - Defaulting and triviality - Unknown - - - 1146 - C++11 - exception-specifications of defaulted functions - Unknown - - - 1147 - C++11 - Destructors should be default nothrow - Unknown - 1148 C++11 @@ -6716,364 +2843,124 @@ Inheriting constructors have not been implemented Unknown - - 1151 + + 1173 C++11 - Overload resolution with initializer-list and non-list constructors + Unclear specification of effects of signal handling Unknown - - 1152 + + 1174 C++11 - Rules for determining existence of implicit conversion sequence + When is a pure virtual function “used?” Unknown - - 1153 + + 1175 C++11 - Type matching in address of overloaded function + Disambiguating user-defined literals Unknown - - 1154 + + 1176 C++11 - Address of thread_local variable as non-type template argument + Definition of release sequence Unknown - - 1155 + + 1177 C++11 - Internal-linkage non-type template arguments + Intra-thread dependency-ordered-before Unknown - - 1156 + + 1180 C++11 - Partial ordering in a non-call context + Over-aligned class types Unknown - - 1157 - open - Partial ordering of function templates is still underspecified - Not resolved - - - 1158 + + 1181 C++11 - Recursive instantiation via alias template + What is a “built-in type?” Unknown - - 1159 + + 1187 C++11 - Class and enumeration definitions in template aliases + Problems in initialization example Unknown - - 1160 + + 1188 C++11 - Definitions of template members and the current instantiation + Type punning in constant expressions Unknown - - 1161 + + 1189 C++11 - Dependent nested-name-specifier in a pointer-to-member declarator - Unknown - - - 1162 - NAD - Dependent elaborated-type-specifiers in non-deduced contexts - Unknown - - - 1163 - NAD - extern template prevents inlining functions not marked inline + Address of distinct base class subobjects Unknown - - 1164 + + 1190 C++11 - Partial ordering of f(T&) and f(T&&) + Operations on non-safely-derived pointers Unknown - - 1165 + + 1192 C++11 - Exceptions when destroying array elements + Inadvertent change to ODR and templates Unknown - - 1166 + + 1193 C++11 - exception-declarations that do not declare objects + Use of address-constant pointers in constant expressions Unknown - - 1167 + + 1197 C++11 - function-try-blocks for destructors + Constexpr arrays Unknown - - 1168 + + 1198 C++11 - Additional reasons to call std::terminate + Literal types and copy constructors Unknown - - 1169 - C++11 - Missing feature macro for strict pointer safety + + 1200 + DRWP + Lookup rules for template parameters Unknown - - 1170 + + 1201 C++11 - Access checking during template argument deduction + Are deleted and defaulted functions definitions? Unknown - - 1171 + + 1204 C++11 - Partial stack unwinding with noexcept violation + Specifiers in a for-range-declaration Unknown - - 1172 - drafting - “instantiation-dependent” constructs + + 1209 + open + Is a potentially-evaluated expression in a template definition a “use?” Not resolved - - 1173 - C++11 - Unclear specification of effects of signal handling - Unknown - - - 1174 + + 1210 C++11 - When is a pure virtual function “used?” - Unknown - - - 1175 - C++11 - Disambiguating user-defined literals - Unknown - - - 1176 - C++11 - Definition of release sequence - Unknown - - - 1177 - C++11 - Intra-thread dependency-ordered-before - Unknown - - - 1178 - C++11 - Deduction failure matching placement new - Unknown - - - 1179 - NAD - Cv-qualification of non-type template parameters - Unknown - - - 1180 - C++11 - Over-aligned class types - Unknown - - - 1181 - C++11 - What is a “built-in type?” - Unknown - - - 1182 - C++11 - Incorrect description of pack expansion syntax - Unknown - - - 1183 - C++11 - Expansion of parameter packs in declarators - Unknown - - - 1184 - C++11 - Argument conversions to nondeduced parameter types - Unknown - - - 1185 - C++11 - Misleading description of language linkage and member function types - Unknown - - - 1186 - C++11 - Non-dependent constexpr violations in function templates - Unknown - - - 1187 - C++11 - Problems in initialization example - Unknown - - - 1188 - C++11 - Type punning in constant expressions - Unknown - - - 1189 - C++11 - Address of distinct base class subobjects - Unknown - - - 1190 - C++11 - Operations on non-safely-derived pointers - Unknown - - - 1191 - C++11 - Deleted subobject destructors and implicitly-defined constructors - Unknown - - - 1192 - C++11 - Inadvertent change to ODR and templates - Unknown - - - 1193 - C++11 - Use of address-constant pointers in constant expressions - Unknown - - - 1194 - C++11 - Constexpr references - Unknown - - - 1195 - C++11 - References to non-literal types in constexpr functions - Unknown - - - 1196 - C++11 - Definition required for explicit instantiation after explicit specialization? - Unknown - - - 1197 - C++11 - Constexpr arrays - Unknown - - - 1198 - C++11 - Literal types and copy constructors - Unknown - - - 1199 - C++11 - Deleted constexpr functions - Unknown - - - 1200 - open - Lookup rules for template parameters - Not resolved - - - 1201 - C++11 - Are deleted and defaulted functions definitions? - Unknown - - - 1202 - C++11 - Calling virtual functions during destruction - Unknown - - - 1203 - dup - Misleading note regarding initialized static data members - Unknown - - - 1204 - C++11 - Specifiers in a for-range-declaration - Unknown - - - 1205 - dup - Lvalue reference binding and function viability - Unknown - - - 1206 - C++11 - Defining opaque enumeration members of class templates - Unknown - - - 1207 - C++11 - Type of class member in trailing-return-type - Unknown - - - 1208 - C++11 - Explicit noexcept in defaulted definition - Unknown - - - 1209 - open - Is a potentially-evaluated expression in a template definition a “use?” - Not resolved - - - 1210 - C++11 - Injection of elaborated-type-specifier in enumeration scope + Injection of elaborated-type-specifier in enumeration scope Unknown @@ -7082,48 +2969,12 @@ Misaligned lvalues Not resolved - - 1212 - C++11 - Non-function-call xvalues and decltype - Unknown - 1213 CD3 Array subscripting and xvalues Clang 7 - - 1214 - C++11 - Kinds of initializers - Unknown - - - 1215 - C++11 - Definition of POD struct - Unknown - - - 1216 - C++11 - Exceptions “allowed” by a noexcept-specification - Unknown - - - 1217 - NAD - Are deleted functions implicitly noexcept? - Unknown - - - 1218 - C++11 - What is the “currently-handled exception” in a multi-threaded program? - Unknown - 1219 C++11 @@ -7136,18 +2987,6 @@ Looking up conversion-type-ids Unknown - - 1221 - open - Partial ordering and reference collapsing - Not resolved - - - 1222 - NAD - Unnecessary restriction on auto array types - Unknown - 1223 drafting @@ -7160,76 +2999,10 @@ constexpr defaulted copy constructors Unknown - - 1225 - C++11 - constexpr constructors and virtual bases - Unknown - - - 1226 - CD3 - Converting a braced-init-list default argument - Unknown - - - 1227 - CD3 - Mixing immediate and non-immediate contexts in deduction failure - Unknown - - - 1228 - NAD - Copy-list-initialization and explicit constructors - Unknown - - - 1229 - C++11 - Overload resolution with empty braced-init-list argument - Unknown - - + 1230 - open + dup Confusing description of ambiguity of destructor name - Not resolved - - - 1231 - C++11 - Variadic templates requiring an empty pack expansion - Unknown - - - 1232 - C++11 - Creation of array temporaries using a braced-init-list - Unknown - - - 1233 - C++11 - Pack expansions and dependent calls - Unknown - - - 1234 - C++11 - abstract-declarator does not permit ... after ptr-operator - Unknown - - - 1235 - C++11 - “Unused” ellipsis and default arguments in partial ordering - Unknown - - - 1236 - C++11 - Inconsistently-interrelated examples Unknown @@ -7238,101 +3011,29 @@ Deprecated implicit copy assignment in example Unknown - - 1238 - C++11 - Overloading ambiguity binding reference to function - Unknown - 1239 C++11 Hexadecimal floating-point literals vs user-defined literals Unknown - - 1240 - C++11 - constexpr defaulted constructors - Unknown - - - 1241 - C++11 - Which members does a destructor destroy? - Unknown - - - 1242 - C++11 - Initializing variant class members - Unknown - - - 1243 - C++11 - Misleading footnote regarding multiple-declarator declarations - Unknown - - - 1244 - C++11 - Equivalence of alias templates and class templates - Unknown - - - 1245 - C++11 - Matching declarations involving decltype - Unknown - - - 1246 - C++11 - Non-deduced non-final parameter packs - Unknown - - - 1247 - CD4 - Restriction on alias name appearing in type-id - Unknown - - - 1248 - open - Updating Annex C to C99 - Not resolved - 1249 drafting Cv-qualification of nested lambda capture Not resolved - - 1250 - CD3 - Cv-qualification of incomplete virtual function return types - Clang 3.9 - 1251 CD3 C compatibility: casting to unqualified void* Unknown - + 1252 - drafting + DRWP Overloading member function templates based on dependent return type - Not resolved - - - 1253 - drafting - Generic non-template members - Not resolved + Unknown 1254 @@ -7352,18 +3053,6 @@ Unevaluated operands are not necessarily constant expressions Not resolved - - 1257 - open - Instantiation via non-dependent references in uninstantiated templates - Not resolved - - - 1258 - drafting - “Instantiation context” differs from dependent lookup rules - Not resolved - 1259 NAD @@ -7376,48 +3065,18 @@ Incorrect use of term “overloaded” in description of odr-use Unknown - - 1261 - CD3 - Explicit handling of cv-qualification with non-class prvalues - Unknown - - - 1262 - CD3 - Default template arguments and deduction failure - Unknown - - - 1263 - NAD - Mismatch between rvalue reference binding and overload resolution - Unknown - 1264 CD3 Use of this in constexpr constructor Unknown - - 1265 - CD3 - Mixed use of the auto specifier - Clang 5 - 1266 open user-defined-integer-literal overflow Not resolved - - 1267 - CD3 - Rvalue reference types in exception-specifications - Unknown - 1268 CD3 @@ -7430,142 +3089,40 @@ dynamic_cast of an xvalue operand Unknown - - 1270 - CD3 - Brace elision in array temporary initialization - Unknown - - - 1271 - DRWP - Imprecise wording regarding dependent types - Unknown - - - 1272 - NAD - Implicit definition of static data member of const literal type - Unknown - - - 1273 - NAD - Accessibility and function signatures - Unknown - 1274 CD4 Common nonterminal for expression and braced-init-list Unknown - - 1275 - CD3 - Incorrect comment in example of template parameter pack restriction - Unknown - 1276 NAD Reference to stdint.h Unknown - - 1277 - NAD - Lax definition of intmax_t and uintmax_t - Unknown - - - 1278 - drafting - Incorrect treatment of contrived object - Not resolved - - - 1279 - drafting - Additional differences between C++ 2003 and C++ 2011 - Not resolved - 1280 NAD Object reallocation and reference members Unknown - - 1281 - NAD - Virtual and dependent base classes - Unknown - - - 1282 - CD3 - Underspecified destructor exception-specification - Unknown - - - 1283 - drafting - Static data members of classes with typedef name for linkage purposes - Not resolved - 1284 CD4 Should the lifetime of an array be independent of that of its elements? Unknown - + 1285 - open - Trivial destructors and object lifetime - Not resolved - - - 1286 - drafting - Equivalence of alias templates - Not resolved - - - 1287 - C++14 - Direct initialization vs “implicit” conversion in reference binding - Unknown - - - 1288 - CD3 - Reference list initialization - Unknown - - - 1289 NAD - Can an alias template name the current instantiation? - Unknown - - - 1290 - CD3 - Lifetime of the underlying array of an initializer_list member + Trivial destructors and object lifetime Unknown - + 1291 - drafting + DRWP Looking up a conversion-type-id - Not resolved - - - 1292 - CD4 - Dependent calls with braced-init-lists containing a pack expansion Unknown @@ -7580,33 +3137,9 @@ Side effects in dynamic/static initialization Not resolved - - 1295 - CD3 - Binding a reference to an rvalue bit-field - Clang 4 - - - 1296 - CD3 - Ill-formed template declarations (not just definitions) - Unknown - - - 1297 - CD3 - Misplaced function attribute-specifier - Unknown - - - 1298 - CD3 - Incorrect example in overload resolution - Unknown - 1299 - DRWP + CD5 “Temporary objects” vs “temporary expressions” Unknown @@ -7616,30 +3149,12 @@ T() for array types Unknown - - 1301 - CD3 - Value initialization of union - Unknown - 1302 CD3 noexcept applied to expression of type void Unknown - - 1303 - NAD - C language linkage for template with internal linkage - Unknown - - - 1304 - drafting - Omitted array bound with string initialization - Not resolved - 1305 CD3 @@ -7652,24 +3167,6 @@ Modifying an object within a const member function Unknown - - 1307 - C++14 - Overload resolution based on size of array initializer-list - Unknown - - - 1308 - CD3 - Completeness of class type within an exception-specification - Unknown - - - 1309 - CD4 - Incorrect note regarding lookup of a member of the current instantiation - Unknown - 1310 CD3 @@ -7706,112 +3203,16 @@ Restrictions on non-type template arguments in partial specializations Partial - - 1316 - NAD - constexpr function requirements and class scope - Unknown - - - 1317 - NAD - Unnamed scoped enumerations - Unknown - - - 1318 - CD3 - Syntactic ambiguities with final - Unknown - - - 1319 - NAD - Error in pack expansion example - Unknown - 1320 CD3 Converting scoped enumerations to bool Unknown - - 1321 - CD3 - Equivalency of dependent calls - Unknown - - - 1322 - drafting - Function parameter type decay in templates - Not resolved - - - 1323 - NAD - Nonexistent nonterminal in alignment-specifier grammar - Unknown - - - 1324 - CD3 - Value initialization and defaulted constructors - Unknown - - - 1325 - NAD - Omitted declarator in friend declarations - Unknown - - - 1326 - extension - Deducing an array bound from an initializer-list - Extension - - - 1327 - CD3 - virt-specifier in a defaulted definition - Unknown - - - 1328 - CD3 - Conflict in reference binding vs overload resolution - Unknown - - - 1329 - CD3 - Recursive deduction substitutions - Unknown - - - 1330 - CD3 - Delayed instantiation of noexcept specifiers - Clang 4 (C++11 onwards) - - - 1331 - extension - const mismatch with defaulted copy constructor - Extension - - + 1332 - drafting + CD5 Handling of invalid universal-character-names - Not resolved - - - 1333 - CD3 - Omission of const in a defaulted copy constructor Unknown @@ -7820,54 +3221,18 @@ Layout compatibility and cv-qualification Unknown - - 1335 - drafting - Stringizing, extended characters, and universal-character-names - Not resolved - - - 1336 - CD3 - Definition of “converting constructor” - Unknown - - - 1337 - dup - Partial ordering and non-deduced parameters - Unknown - 1338 CD4 Aliasing and allocation functions Unknown - - 1339 - NAD - Parenthesized braced-init-list and arrays - Unknown - 1340 CD3 Complete type in member pointer expressions Unknown - - 1341 - NAD - Bit-field initializers - Unknown - - - 1342 - drafting - Order of initialization with multiple declarators - Not resolved - 1343 C++17 @@ -7880,102 +3245,24 @@ Adding new special member functions to a class via default arguments Unknown - - 1345 - CD3 - Initialization of anonymous union class members - Unknown - - - 1346 - CD3 - expression-list initializers and the auto specifier - Clang 3.5 - - - 1347 - CD3 - Consistency of auto in multiple-declarator declarations - Yes - - - 1348 - drafting - Use of auto in a trailing-return-type - Not resolved - - - 1349 - dup - Consistency of alias template redeclarations - Unknown - 1350 CD3 Incorrect exception specification for inherited constructors Unknown - - 1351 - CD4 - Problems with implicitly-declared exception-specifications - Unknown - 1352 CD3 Inconsistent class scope and completeness rules Unknown - - 1353 - drafting - Array and variant members and deleted special member functions - Not resolved - 1354 CD3 Destructor exceptions for temporaries in noexcept expressions Unknown - - 1355 - CD3 - Aggregates and “user-provided” constructors - Unknown - - - 1356 - CD4 - Exception specifications of copy assignment operators with virtual bases - Unknown - - - 1357 - CD3 - brace-or-equal-initializers for function and typedef members - Unknown - - - 1358 - CD3 - Unintentionally ill-formed constexpr function template instances - Yes - - - 1359 - CD3 - constexpr union constructors - Clang 3.5 - - - 1360 - drafting - constexpr defaulted default constructors - Not resolved - 1361 CD3 @@ -7988,12 +3275,6 @@ Complete type required for implicit conversion to T& Unknown - - 1363 - CD3 - Triviality vs multiple default constructors - Unknown - 1364 CD3 @@ -8006,222 +3287,30 @@ Calling undefined constexpr functions Unknown - - 1366 - CD3 - Deleted constexpr constructors and virtual base classes - Unknown - 1367 CD3 Use of this in a constant expression Unknown - - 1368 - CD3 - Value initialization and defaulted constructors (part 2) - Unknown - - - 1369 - CD3 - Function invocation substitution of this - Unknown - - - 1370 - CD3 - identifier-list cannot contain ellipsis - Unknown - - - 1371 - NAD - Deduction from T&& in return types - Unknown - - - 1372 - CD3 - Cross-references incorrect in conversion function template argument deduction - Unknown - - - 1373 - dup - Overload resolution changes matching reference-binding changes - Unknown - - - 1374 - CD3 - Qualification conversion vs difference in reference binding - Unknown - - - 1375 - CD3 - Reference to anonymous union? - Unknown - 1376 C++14 static_cast of temporary to rvalue reference Unknown - - 1377 - dup - Access declarations not mentioned in Annex C - Unknown - - - 1378 - open - When is an instantiation required? - Not resolved - - - 1379 - NAD - Is std::initializer_list an aggregate? - Unknown - - - 1380 - CD3 - Type definitions in template-parameter parameter-declarations - Unknown - - - 1381 - CD3 - Implicitly-declared special member functions and default nothrow - Unknown - - - 1382 - CD3 - Dead code for constructor names - Unknown - - - 1383 - CD3 - Clarifying discarded-value expressions - Unknown - 1384 NAD reinterpret_cast in constant expressions Unknown - - 1385 - CD3 - Syntactic forms of conversion functions for surrogate call functions - Unknown - - - 1386 - NAD - Explicitly-specified partial argument list with multiple parameter packs - Unknown - - - 1387 - CD3 - Missing non-deduced context for decltype - Unknown - - - 1388 - CD3 - Missing non-deduced context following a function parameter pack - Clang 4 - - - 1389 - NAD - Recursive reference in trailing-return-type - Unknown - - - 1390 - drafting - Dependency of alias template specializations - Not resolved - - - 1391 - CD4 - Conversions to parameter types with non-deduced template arguments - Partial - - - 1392 - CD3 - Explicit conversion functions for references and non-references - Unknown - - - 1393 - extension - Pack expansions in using-declarations - Extension - - - 1394 - CD3 - Incomplete types as parameters of deleted functions - Unknown - - - 1395 - C++17 - Partial ordering of variadic templates reconsidered - Unknown - - - 1396 - drafting - Deferred instantiation and checking of non-static data member initializers - Not resolved - - - 1397 - CD4 - Class completeness in non-static data member initializers - Unknown - - - 1398 - CD3 - Non-type template parameters of type std::nullptr_t - Unknown - - - 1399 - CD3 - Deduction with multiple function parameter packs - Duplicate of 1388 - 1400 NAD Function pointer equality Unknown - - 1401 - CD3 - Similar types and reference compatibility - Unknown - 1402 CD3 @@ -8234,72 +3323,24 @@ Universal-character-names in comments Not resolved - - 1404 - drafting - Object reallocation in unions - Not resolved - 1405 CD3 constexpr and mutable members of literal types Unknown - - 1406 - CD3 - ref-qualifiers and added parameters of non-static member function templates - Unknown - 1407 NAD Integral to bool conversion in converted constant expressions Unknown - - 1408 - CD3 - What is “the same aggregate initialization?” - Unknown - - - 1409 - CD3 - What is the second standard conversion sequence of a list-initialization sequence? - Unknown - - - 1410 - CD3 - Reference overload tiebreakers should apply to rvalue references - Unknown - - - 1411 - CD3 - More on global scope :: in nested-name-specifier - Unknown - 1412 CD3 Problems in specifying pointer conversions Unknown - - 1413 - CD3 - Missing cases of value-dependency - Clang 12 - - - 1414 - drafting - Binding an rvalue reference to a reference-unrelated lvalue - Not resolved - 1415 CD3 @@ -8307,39 +3348,9 @@ Unknown - 1416 - CD3 - Function cv-qualifiers and typeid - Unknown - - - 1417 - C++14 - Pointers/references to functions with cv-qualifiers or ref-qualifier - Unknown - - - 1418 - CD3 - Type of initializer_list backing array - Unknown - - - 1419 - NAD - Evaluation order in aggregate initialization - Unknown - - - 1420 - NAD - Abstract final classes - Unknown - - - 1421 - NAD - Full expressions and aggregate initialization + 1416 + CD3 + Function cv-qualifiers and typeid Unknown @@ -8354,30 +3365,6 @@ Convertibility of nullptr to bool Clang 11 - - 1424 - C++14 - When must sub-object destructors be accessible? - Unknown - - - 1425 - CD3 - Base-class subobjects of standard-layout structs - N/A (ABI constraint) - - - 1426 - extension - Allowing additional parameter types in defaulted functions - Extension - - - 1427 - NAD - Default constructor and deleted or inaccessible destructors - Unknown - 1428 CD3 @@ -8390,54 +3377,12 @@ Scope of a member template's template parameter Unknown - - 1430 - drafting - Pack expansion into fixed alias template parameter list - Not resolved - - - 1431 - CD3 - Exceptions from other than throw-expressions - Unknown - - - 1432 - drafting - Newly-ambiguous variadic template expansions - Not resolved - 1433 extension trailing-return-type and point of declaration Extension - - 1434 - NAD - Parenthesized braced-init-list - Unknown - - - 1435 - CD3 - template-id as the declarator for a class template constructor - Unknown - - - 1436 - drafting - Interaction of constant expression changes with preprocessor expressions - Not resolved - - - 1437 - CD3 - alignas in alias-declaration - Unknown - 1438 CD3 @@ -8468,30 +3413,12 @@ Argument-dependent lookup in the range-based for Unknown - - 1443 - NAD - Default arguments and non-static data members - Yes - - - 1444 - drafting - Type adjustments of non-type template parameters - Not resolved - 1445 dup Argument-dependent lookup of begin and end Unknown - - 1446 - CD4 - Member function with no ref-qualifier and non-member function with rvalue reference - Unknown - 1447 CD3 @@ -8504,29 +3431,17 @@ Integral values of type bool Unknown - - 1449 - CD3 - Narrowing conversion of negative value to unsigned type - Unknown - 1450 CD3 INT_MIN % -1 Unknown - - 1451 - extension - Objects with no linkage in non-type template arguments - Extension - - + 1452 - drafting + NAD Value-initialized objects may be constants - Not resolved + Unknown 1453 @@ -8564,36 +3479,6 @@ Address of incomplete type vs operator&() Unknown - - 1459 - open - Reference-binding tiebreakers in overload resolution - Not resolved - - - 1460 - C++14 - What is an empty union? - Clang 3.5 - - - 1461 - NAD - Narrowing conversions to bit-fields - Unknown - - - 1462 - CD3 - Deduction failure vs “ill-formed, no diagnostic required” - Unknown - - - 1463 - extension - extern "C" alias templates - Extension - 1464 CD3 @@ -8612,17 +3497,11 @@ Visible sequences of side effects are redundant Unknown - - 1467 - CD4 - List-initialization of aggregate from same-type object - Clang 3.7 (C++11 onwards) - - + 1468 - drafting + CD5 typeid, overload resolution, and implicit lambda capture - Not resolved + Unknown 1469 @@ -8636,168 +3515,66 @@ Thread migration Unknown - - 1471 - CD3 - Nested type of non-dependent base - Unknown - 1472 CD3 odr-use of reference variables Unknown - - 1473 - CD3 - Syntax of literal-operator-id - Unknown - 1474 NAD User-defined literals and <inttypes.h> format macros Unknown - - 1475 - CD3 - Errors in [[carries_dependency]] example - Unknown - - - 1476 - CD3 - Definition of user-defined type - Unknown - 1477 CD3 Definition of a friend outside its namespace Unknown - - 1478 - drafting - template keyword for dependent template template arguments - Not resolved - - - 1479 - CD3 - Literal operators and default arguments - Unknown - 1480 CD3 Constant initialization via non-constant temporary Unknown - - 1481 - CD3 - Increment/decrement operators with reference parameters - Unknown - 1482 CD3 Point of declaration of enumeration Unknown - - 1483 - NAD - Non-dependent static_assert-declarations - Unknown - - - 1484 - CD4 - Unused local classes of function templates - Unknown - - - 1485 - drafting - Out-of-class definition of member unscoped opaque enumeration - Not resolved - - - 1486 - drafting - Base-derived conversion in member pointer deduction - Not resolved - 1487 CD3 When are inheriting constructors declared? Unknown - - 1488 - drafting - abstract-pack-declarators in type-ids - Not resolved - 1489 CD3 Is value-initialization of an array constant initialization? Unknown - - 1490 - CD4 - List-initialization from a string literal - Clang 3.7 (C++11 onwards) - 1491 CD3 Move construction and rvalue reference members Unknown - - 1492 - CD4 - Exception specifications on template destructors - Unknown - 1493 C++14 Criteria for move-construction Unknown - - 1494 - CD3 - Temporary initialization for reference binding in list-initialization - Unknown - 1495 CD3 Partial specialization of variadic class template Clang 4 - - 1496 - CD4 - Triviality with deleted and missing default constructors - Unknown - - - 1497 - NAD - Aggregate initialization with parenthesized string literal - Unknown - 1498 dup @@ -8810,72 +3587,12 @@ Missing case for deleted move assignment operator Not resolved - - 1500 - open - Name lookup of dependent conversion function - Not resolved - - - 1501 - NAD - Nested braces in list-initialization - Unknown - - - 1502 - CD3 - Value initialization of unions with member initializers - Unknown - - - 1503 - CD3 - Exceptions during copy to exception object - Unknown - 1504 CD3 Pointer arithmetic after derived-base conversion Unknown - - 1505 - dup - Direct binding of reference to temporary in list-initialization - Unknown - - - 1506 - CD3 - Value category of initializer_list object - Unknown - - - 1507 - CD3 - Value initialization with trivial inaccessible default constructor - Unknown - - - 1508 - C++14 - Template initializer-list constructors - Unknown - - - 1509 - C++14 - Definition of “non-template function” - Unknown - - - 1510 - CD3 - cv-qualified references via decltype - Unknown - 1511 CD3 @@ -8888,18 +3605,6 @@ Pointer comparison vs qualification conversions Clang 4 - - 1513 - drafting - initializer_list deduction failure - Not resolved - - - 1514 - C++14 - Ambiguity between enumeration definition and zero-length bit-field - Clang 11 - 1515 CD3 @@ -8912,108 +3617,36 @@ Definition of “virtual function call” Unknown - - 1517 - drafting - Unclear/missing description of behavior during construction/destruction - Not resolved - - - 1518 - CD4 - Explicit default constructors and copy-list-initialization - Clang 4 - - - 1519 - NAD - Conflicting default and variadic constructors - Unknown - - - 1520 - NAD - Alias template specialization vs pack expansion - Unknown - 1521 drafting T{expr} with reference types Not resolved - - 1522 - CD3 - Access checking for initializer_list array initialization - Unknown - 1523 - DRWP + CD5 Point of declaration in range-based for Unknown - - 1524 - drafting - Incompletely-defined class template base - Not resolved - 1525 NAD Array bound inference in temporary array Unknown - - 1526 - dup - Dependent-class lookup in the current instantiation - Unknown - 1527 CD3 Assignment from braced-init-list Unknown - - 1528 - CD3 - Repeated cv-qualifiers in declarators - Unknown - - - 1529 - drafting - Nomenclature for variable vs reference non-static data member - Not resolved - 1530 drafting Member access in out-of-lifetime objects Not resolved - - 1531 - CD3 - Definition of “access” (verb) - Unknown - - - 1532 - CD3 - Explicit instantiation and member templates - Unknown - - - 1533 - CD3 - Function pack expansion for member initialization - Unknown - 1534 dup @@ -9026,12 +3659,6 @@ typeid in core constant expressions Unknown - - 1536 - drafting - Overload resolution with temporary from initializer list - Not resolved - 1537 CD3 @@ -9068,102 +3695,42 @@ Compound assignment of braced-init-list Not resolved - - 1543 - CD3 - Implicit conversion sequence for empty initializer list - Unknown - 1544 CD3 Linkage of member of unnamed namespace Unknown - - 1545 - drafting - friend function templates defined in class templates - Not resolved - - - 1546 - NAD - Errors in function template default arguments - Unknown - - - 1547 - NAD - typename keyword in alias-declarations - Unknown - 1548 drafting Copy/move construction and conversion functions Not resolved - - 1549 - open - Overloaded comma operator with void operand - Not resolved - 1550 CD3 Parenthesized throw-expression operand of conditional-expression Yes - - 1551 - C++14 - Wording problems in using-declaration specification - Unknown - - - 1552 - CD4 - exception-specifications and defaulted special member functions - Unknown - 1553 CD3 sizeof and xvalue bit-fields Unknown - - 1554 - drafting - Access and alias templates - Not resolved - 1555 extension Language linkage and function type compatibility Extension - - 1556 - CD3 - Constructors and explicit conversion functions in direct initialization - Unknown - 1557 CD3 Language linkage of converted lambda function pointer Unknown - - 1558 - CD4 - Unused arguments in alias template specializations - Clang 12 - 1559 CD3 @@ -9176,36 +3743,6 @@ Gratuitous lvalue-to-rvalue conversion in conditional-expression with throw-expression operand Clang 3.5 - - 1561 - extension - Aggregates with empty base classes - Extension - - - 1562 - C++14 - Non-static data member initializers and union ctor-initializer - Unknown - - - 1563 - CD3 - List-initialization and overloaded function disambiguation - Yes - - - 1564 - NAD - Template argument deduction from an initializer list - Unknown - - - 1565 - NAD - Copy elision and lifetime of initializer_list underlying array - Unknown - 1566 NAD @@ -9224,150 +3761,54 @@ Temporary lifetime extension with intervening cast Unknown - - 1569 - C++14 - Deducing a function parameter pack before ellipsis - Unknown - - - 1570 - C++14 - Address of subobject as non-type template argument - Unknown - - - 1571 - CD4 - cv-qualification for indirect reference binding via conversion function - Unknown - - - 1572 - CD4 - Incorrect example for rvalue reference binding via conversion function - Unknown - 1573 CD4 Inherited constructor characteristics Clang 3.9 - - 1574 - NAD - Explicitly-defaulted constexpr functions in wrapper templates - Unknown - 1575 C++14 Incorrect definition of “strict pointer safety” Unknown - - 1576 - C++14 - Discarded-value volatile xvalues - Unknown - 1577 NAD Unnecessary restrictions on partial specializations Unknown - - 1578 - NAD - Value-initialization of aggregates - Unknown - 1579 C++14 Return by converting move constructor Clang 3.9 - - 1580 - drafting - Default arguments in explicit instantiations - Not resolved - 1581 - DRWP + CD5 When are constexpr member functions defined? Unknown - - 1582 - drafting - Template default arguments and deduction failure - Not resolved - 1583 C++14 Incorrect example of unspecified behavior Unknown - - 1584 - drafting - Deducing function types from cv-qualified types - Not resolved - 1585 NAD Value category of member access of rvalue reference member Unknown - - 1586 - NAD - Naming a destructor via decltype - Unknown - - - 1587 - C++14 - constexpr initialization and nested anonymous unions - Unknown - - - 1588 - CD3 - Deducing cv-qualified auto - Unknown - - - 1589 - CD4 - Ambiguous ranking of list-initialization sequences - Clang 3.7 (C++11 onwards) - 1590 CD4 Bypassing non-copy/move constructor copying Unknown - - 1591 - CD4 - Deducing array bound and element type from initializer list - Unknown - - - 1592 - C++14 - When do template parameters match? - Unknown - 1593 C++14 @@ -9380,72 +3821,30 @@ Lazy declaration of special members vs overload errors Not resolved - - 1595 - C++14 - Constructors “involved in” subobject initialization - Unknown - 1596 CD4 Non-array objects as array[1] Unknown - - 1597 - CD3 - Misleading constexpr example - Unknown - 1598 C++14 Criterion for equality of pointers to members Unknown - - 1599 - CD4 - Lifetime of initializer_list underlying array - Unknown - - - 1600 - CD4 - Erroneous reference initialization in example - Unknown - 1601 C++14 Promotion of enumeration with fixed underlying type Clang 10 - - 1602 - open - Linkage of specialization vs linkage of template arguments - Not resolved - 1603 CD4 Errors resulting from giving unnamed namespaces internal linkage Unknown - - 1604 - C++14 - Double temporaries in reference initialization - Unknown - - - 1605 - CD3 - Misleading parenthetical comment for explicit destructor call - Unknown - 1606 NAD @@ -9458,30 +3857,6 @@ Lambdas in template parameters Unknown - - 1608 - C++14 - Operator lookup in trailing return type - Unknown - - - 1609 - open - Default arguments and function parameter packs - Not resolved - - - 1610 - drafting - Cv-qualification in deduction of reference to array - Not resolved - - - 1611 - C++14 - Deleted default constructor for abstract class - Duplicate of 1658 - 1612 C++14 @@ -9500,84 +3875,18 @@ Address of pure virtual function vs odr-use Unknown - - 1615 - CD4 - Alignment of types, variables, and members - Unknown - - + 1616 - drafting - Disambiguation parsing and template parameters - Not resolved - - - 1617 - open - alignas and non-defining declarations - Not resolved - - - 1618 - C++14 - Gratuitously-unsigned underlying enum type - Unknown - - - 1619 - open - Definition of current instantiation - Not resolved - - - 1620 - open - User-defined literals and extended integer types - Not resolved - - - 1621 DRWP - Member initializers in anonymous unions - Unknown - - - 1622 - C++17 - Empty aggregate initializer for union - Unknown - - - 1623 - drafting - Deleted default union constructor and member initializers - Not resolved - - - 1624 - NAD - Destruction of union members with member initializers + Disambiguation parsing and template parameters Unknown - - 1625 - open - Adding spaces between tokens in stringizing - Not resolved - 1626 drafting constexpr member functions in brace-or-equal-initializers Not resolved - - 1627 - NAD - Agreement of dependent alignas specifiers - Unknown - 1628 open @@ -9590,107 +3899,29 @@ Can a closure class be a literal type? Unknown - - 1630 - CD4 - Multiple default constructor templates - Unknown - - - 1631 - CD4 - Incorrect overload resolution for single-element initializer-list - Clang 3.7 - 1632 - DRWP + CD5 Lambda capture in member initializers Unknown - - 1633 - CD4 - Copy-initialization in member initialization - Unknown - 1634 drafting Temporary storage duration Not resolved - - 1635 - drafting - How similar are template default arguments to function default arguments? - Not resolved - - - 1636 - DRWP - Bits required for negative enumerator values - Unknown - - - 1637 - NAD - Recursion in constexpr template default constructor - Unknown - - - 1638 - CD4 - Declaring an explicit specialization of a scoped enumeration - Yes - - - 1639 - CD4 - exception-specifications and pointer/pointer-to-member expressions - Unknown - - - 1640 - drafting - Array of abstract instance of class template - Not resolved - - - 1641 - NAD - Assignment in member initializer - Unknown - - - 1642 - open - Missing requirements for prvalue operands - Not resolved - - - 1643 - extension - Default arguments for template parameter packs - Extension - - - 1644 - open - Equivalent exception-specifications in function template declarations - Not resolved - 1645 CD4 Identical inheriting constructors via default arguments Clang 3.9 - + 1646 - drafting + CD5 decltype-specifiers, abstract classes, and deduction failure - Not resolved + Unknown 1647 @@ -9704,18 +3935,6 @@ thread_local vs block extern declarations Unknown - - 1649 - C++14 - Error in the syntax of mem-initializer-list - Unknown - - - 1650 - NAD - Class prvalues in reference initialization - Unknown - 1651 NAD @@ -9746,36 +3965,18 @@ Line endings in raw string literals Not resolved - + 1656 - drafting + WP Encoding of numerically-escaped characters - Not resolved - - - 1657 - CD4 - Attributes for namespaces and enumerators Unknown - - 1658 - C++14 - Deleted default constructor for abstract class via destructor - Clang 5 - 1659 open Initialization order of thread_local template static data members Not resolved - - 1660 - C++14 - member-declaration requirements and unnamed bit-fields - Unknown - 1661 NAD @@ -9800,72 +4001,12 @@ Argument-dependent lookup of lambdas used in default arguments Unknown - - 1665 - drafting - Declaration matching in explicit instantiations - Not resolved - - - 1666 - C++14 - Address constant expressions - Unknown - - - 1667 - NAD - Function exiting via exception called by destructor during unwinding - Unknown - - - 1668 - drafting - Parameter type determination still not clear enough - Not resolved - 1669 C++14 auto return type for main Unknown - - 1670 - drafting - auto as conversion-type-id - Not resolved - - - 1671 - NAD - Unclear rules for deduction with cv-qualification - Unknown - - - 1672 - CD4 - Layout compatibility with multiple empty bases - Clang 7 - - - 1673 - C++14 - Clarifying overload resolution for the second step of copy-initialization - Unknown - - - 1674 - C++14 - Return type deduction for address of function - Unknown - - - 1675 - NAD - Size limit for automatic array object - Unknown - 1676 drafting @@ -9914,12 +4055,6 @@ Incorrect example after constexpr changes Unknown - - 1684 - C++14 - Static constexpr member functions for non-literal classes - Clang 3.6 - 1685 NAD @@ -9932,24 +4067,6 @@ Which variables are “explicitly declared const?” Unknown - - 1687 - C++14 - Conversions of operands of built-in operators - Clang 7 - - - 1688 - NAD - Volatile constexpr variables - Unknown - - - 1689 - C++14 - Syntactic nonterminal for operand of alignas - Unknown - 1690 C++14 @@ -9968,12 +4085,6 @@ Associated namespaces of doubly-nested classes Clang 9 - - 1693 - C++14 - Superfluous semicolons in class definitions - Unknown - 1694 CD4 @@ -10002,102 +4113,18 @@ 1698 open Files ending in \ - Not resolved - - - 1699 - drafting - Does befriending a class befriend its friends? - Not resolved - - - 1700 - NAD - Does the special rvalue-reference deduction apply to alias templates? - Unknown - - - 1701 - drafting - Array vs sequence in object representation - Not resolved - - - 1702 - drafting - Rephrasing the definition of “anonymous union” - Not resolved - - - 1703 - NAD - Language linkage of names of functions with internal linkage - Unknown - - - 1704 - DRWP - Type checking in explicit instantiation of variable templates - Unknown - - - 1705 - CD4 - Unclear specification of “more specialized” - Unknown - - - 1706 - drafting - alignas pack expansion syntax - Not resolved - - - 1707 - C++14 - template in elaborated-type-specifier without nested-name-specifier - Unknown - - - 1708 - CD4 - overly-strict requirements for names with C language linkage - Unknown - - - 1709 - drafting - Stringizing raw string literals containing newline - Not resolved - - - 1710 - C++17 - Missing template keyword in class-or-decltype - Unknown - - - 1711 - drafting - Missing specification of variable template partial specializations - Not resolved - - - 1712 - CD4 - constexpr variable template declarations - Unknown + Not resolved - - 1713 + + 1701 drafting - Linkage of variable template specializations + Array vs sequence in object representation Not resolved - - 1714 - NAD - odr-use of this from a local class + + 1711 + WP + Missing specification of variable template partial specializations Unknown @@ -10106,42 +4133,12 @@ Access and inherited constructor templates Clang 3.9 - - 1716 - C++14 - When are default arguments evaluated? - Unknown - 1717 C++14 Missing specification of type of binary literal Unknown - - 1718 - drafting - Macro invocation spanning end-of-file - Not resolved - - - 1719 - CD4 - Layout compatibility and cv-qualification revisited - Unknown - - - 1720 - NAD - Macro invocation in #include directive - Unknown - - - 1721 - drafting - Diagnosing ODR violations for static data members - Not resolved - 1722 CD4 @@ -10154,48 +4151,6 @@ Multicharacter user-defined character literals Not resolved - - 1724 - drafting - Unclear rules for deduction failure - Not resolved - - - 1725 - NAD - Trailing return type with nested function declarator - Unknown - - - 1726 - drafting - Declarator operators and conversion function - Not resolved - - - 1727 - NAD - Type of a specialization of a variable template - Unknown - - - 1728 - DRWP - Type of an explicit instantiation of a variable template - Unknown - - - 1729 - drafting - Matching declarations and definitions of variable templates - Not resolved - - - 1730 - drafting - Can a variable template have an unnamed type? - Not resolved - 1731 NAD @@ -10208,12 +4163,6 @@ Defining types in conditions and range-based for statements Unknown - - 1733 - drafting - Return type and value for operator= with ref-qualifier - Not resolved - 1734 CD4 @@ -10232,12 +4181,6 @@ Inheriting constructor templates in a local class Clang 3.9 - - 1737 - C++14 - Type dependence of call to a member of the current instantiation - Unknown - 1738 C++14 @@ -10250,24 +4193,12 @@ Conversion of floating point to enumeration Unknown - - 1740 - C++14 - Disambiguation of noexcept - Unknown - 1741 C++14 odr-use of class object in lvalue-to-rvalue conversion Unknown - - 1742 - open - using-declarations and scoped enumerators - Not resolved - 1743 NAD @@ -10280,12 +4211,6 @@ Unordered initialization for variable template specializations Unknown - - 1745 - NAD - thread_local constexpr variable - Unknown - 1746 C++14 @@ -10310,24 +4235,12 @@ Confusing definition for constant initializer Unknown - - 1750 - CD4 - “Argument” vs “parameter” - Unknown - 1751 CD4 Non-trivial operations vs non-trivial initialization Unknown - - 1752 - CD4 - Right-recursion in mem-initializer-list - Unknown - 1753 CD4 @@ -10346,24 +4259,12 @@ Out-of-class partial specializations of member templates Not resolved - - 1756 - CD4 - Direct-list-initialization of a non-class object - Clang 3.7 - 1757 CD4 Const integral subobjects Unknown - - 1758 - CD4 - Explicit conversion in copy/move list initialization - Clang 3.7 - 1759 C++14 @@ -10376,77 +4277,29 @@ Access of member corresponding to init-capture Unknown - - 1761 - NAD - Runtime check on size of automatic array - Unknown - - - 1762 - C++14 - Reserved identifier used in literal-operator-id example - Unknown - - - 1763 - open - Length mismatch in template type deduction - Not resolved - 1764 C++14 Hiding of function from using-declaration by signature Unknown - - 1765 - C++14 - Overflow of enumeration used as enumerator value - Unknown - - - 1766 - CD4 - Values outside the range of the values of an enumeration - Unknown - 1767 C++14 Scoped enumeration in a switch statement Unknown - - 1768 - NAD - Zero-element array of runtime bound - Unknown - - - 1769 - C++14 - Catching a base class of the exception object - Unknown - - - 1770 - C++14 - Type matching of non-type template parameters and arguments - Unknown - - + 1771 - open + DRWP Restricted lookup in nested-name-specifier - Not resolved + Unknown 1772 C++14 __func__ in a lambda body - Unknown + Clang 14 1773 @@ -10454,12 +4307,6 @@ Out-of-lifetime lvalue-to-rvalue conversion Unknown - - 1774 - CD4 - Discrepancy between subobject destruction and stack unwinding - Unknown - 1775 C++14 @@ -10472,60 +4319,18 @@ Replacement of class objects containing reference members Unknown - - 1777 - CD4 - Empty pack expansion in dynamic-exception-specification - Unknown - - - 1778 - C++14 - exception-specification in explicitly-defaulted functions - Clang 9 - - - 1779 - CD4 - Type dependency of __func__ - Unknown - 1780 CD4 Explicit instantiation/specialization of generic lambda operator() Unknown - - 1781 - DRWP - Converting from nullptr_t to bool in overload resolution - Unknown - - - 1782 - CD4 - Form of initialization for nullptr_t to bool conversion - Unknown - - - 1783 - NAD - Why are virtual destructors non-trivial? - Unknown - 1784 C++17 Concurrent execution during static local initialization Unknown - - 1785 - NAD - Conflicting diagnostic requirements for template definitions - Unknown - 1786 C++14 @@ -10544,48 +4349,12 @@ Sized deallocation of array of non-class type Unknown - - 1789 - drafting - Array reference vs array decay in overload resolution - Not resolved - - - 1790 - extension - Ellipsis following function parameter pack - Extension - - - 1791 - CD4 - Incorrect restrictions on cv-qualifier-seq and ref-qualifier - Unknown - - - 1792 - NAD - Incorrect example of explicit specialization of member enumeration - Unknown - 1793 CD4 thread_local in explicit specializations Unknown - - 1794 - C++17 - template keyword and alias templates - Unknown - - - 1795 - CD4 - Disambiguating original-namespace-definition and extension-namespace-definition - Unknown - 1796 CD4 @@ -10598,12 +4367,6 @@ Are all bit patterns of unsigned char distinct numbers? Unknown - - 1798 - NAD - exception-specifications of template arguments - Unknown - 1799 CD4 @@ -10616,30 +4379,12 @@ Pointer to member of nested anonymous union Unknown - - 1801 - drafting - Kind of expression referring to member of anonymous union - Not resolved - 1802 CD4 char16_t string literals and surrogate pairs Unknown - - 1803 - drafting - opaque-enum-declaration as member-declaration - Not resolved - - - 1804 - CD4 - Partial specialization and friendship - Unknown - 1805 CD4 @@ -10652,118 +4397,28 @@ Virtual bases and move-assignment Unknown - - 1807 - CD4 - Order of destruction of array elements after an exception - Unknown - - - 1808 - drafting - Constructor templates vs default constructors - Not resolved - - - 1809 - CD4 - Narrowing and template argument deduction - Unknown - 1810 CD4 Invalid ud-suffixes Unknown - - 1811 - CD4 - Lookup of deallocation function in a virtual destructor definition - Unknown - - - 1812 - C++17 - Omission of template in a typename-specifier - Unknown - - - 1813 - CD4 - Direct vs indirect bases in standard-layout classes - Clang 7 - - - 1814 - CD4 - Default arguments in lambda-expressions - Yes - - - 1815 - CD4 - Lifetime extension in aggregate initialization - No - 1816 CD4 Unclear specification of bit-field values Unknown - - 1817 - drafting - Linkage specifications and nested scopes - Not resolved - - - 1818 - open - Visibility and inherited language linkage - Not resolved - 1819 CD4 Acceptable scopes for definition of partial specialization Unknown - - 1820 - open - Qualified typedef names - Not resolved - - - 1821 - open - Qualified redeclarations in a class member-specification - Not resolved - - + 1822 - open + DRWP Lookup of parameter names in lambda-expressions - Not resolved - - - 1823 - CD4 - String literal uniqueness in inline functions - Unknown - - - 1824 - CD4 - Completeness of return type vs point of instantiation - Unknown - - - 1825 - C++17 - Partial ordering between variadic and non-variadic function templates Unknown @@ -10772,28 +4427,10 @@ const floating-point in constant expressions Unknown - - 1827 - drafting - Reference binding with ambiguous conversions - Not resolved - - + 1828 - drafting + DRWP nested-name-specifier ambiguity - Not resolved - - - 1829 - open - Dependent unnamed types - Not resolved - - - 1830 - CD4 - Repeated specifiers Unknown @@ -10808,35 +4445,29 @@ Casting to incomplete enumeration Unknown - - 1833 - NAD - friend declarations naming implicitly-declared member functions - Unknown - 1834 CD4 Constant initialization binding a reference to an xvalue Unknown - + 1835 - drafting + DRWP Dependent member lookup before < - Not resolved + Unknown 1836 - DRWP + CD5 Use of class type being defined in trailing-return-type Unknown - + 1837 - drafting + DRWP Use of this in friend and local class declarations - Not resolved + Unknown 1838 @@ -10844,64 +4475,22 @@ Definition via unqualified-id and using-declaration Unknown - + 1839 - review + DRWP Lookup of block-scope extern declarations - Not resolved - - - 1840 - drafting - Non-deleted explicit specialization of deleted function template - Not resolved - - - 1841 - drafting - < following template injected-class-name - Not resolved - - - 1842 - concurrency - Unevaluated operands and “carries a dependency” - Not resolved - - - 1843 - CD4 - Bit-field in conditional operator with throw operand - Unknown - - - 1844 - drafting - Defining “immediate context” - Not resolved - - - 1845 - drafting - Point of instantiation of a variable template specialization - Not resolved - - - 1846 - CD4 - Declaring explicitly-defaulted implicitly-deleted functions Unknown - - 1847 - CD4 - Clarifying compatibility during partial ordering - Unknown + + 1842 + concurrency + Unevaluated operands and “carries a dependency” + Not resolved - - 1848 + + 1843 CD4 - Parenthesized constructor and destructor declarators + Bit-field in conditional operator with throw operand Unknown @@ -10910,53 +4499,23 @@ Variable templates and the ODR Not resolved - - 1850 - CD4 - Differences between definition context and point of instantiation - Unknown - 1851 CD4 decltype(auto) in new-expressions Unknown - - 1852 - CD4 - Wording issues regarding decltype(auto) - Unknown - 1853 drafting Defining “allocated storage” Not resolved - - 1854 - drafting - Disallowing use of implicitly-deleted functions - Not resolved - - - 1855 - dup - Out-of-lifetime access to nonstatic data members - Unknown - - - 1856 - open - Indirect nested classes of class templates - Not resolved - - + 1857 - drafting + CD5 Additional questions about bits - Not resolved + Unknown 1858 @@ -10966,70 +4525,16 @@ 1859 - NAD + CD5 UTF-16 in char16_t string literals Unknown - - 1860 - C++17 - What is a “direct member?” - Unknown - - - 1861 - CD4 - Values of a bit-field - Unknown - - - 1862 - DRWP - Determining “corresponding members” for friendship - Unknown - - - 1863 - CD4 - Requirements on thrown object type to support std::current_exception() - Unknown - - - 1864 - extension - List-initialization of array objects - Extension - 1865 CD4 Pointer arithmetic and multi-level qualification conversions Unknown - - 1866 - CD4 - Initializing variant members with non-trivial destructors - Unknown - - - 1867 - NAD - Function/expression ambiguity with qualified parameter name - Unknown - - - 1868 - drafting - Meaning of “placeholder type” - Not resolved - - - 1869 - NAD - thread_local vs linkage-specifications - Unknown - 1870 CD4 @@ -11042,65 +4547,23 @@ Non-identifier characters in ud-suffix Extension - - 1872 - CD4 - Instantiations of constexpr templates that cannot appear in constant expressions - Clang 9 - - - 1873 - CD4 - Protected member access from derived class friends - Unknown - - - 1874 - CD4 - Type vs non-type template parameters with class keyword - Unknown - 1875 CD4 Reordering declarations in class scope Unknown - - 1876 - extension - Preventing explicit specialization - Extension - - - 1877 - CD4 - Return type deduction from return with no operand - Unknown - - - 1878 - CD4 - operator auto template - Unknown - 1879 NAD Inadequate definition of alignment requirement Unknown - + 1880 - drafting - When are parameter objects destroyed? - Not resolved - - - 1881 CD4 - Standard-layout classes and unnamed bit-fields - Clang 7 + When are parameter objects destroyed? + Unknown 1882 @@ -11108,17 +4571,11 @@ Reserved names without library use Unknown - - 1883 - drafting - Protected access to constructors in mem-initializers - Not resolved - - + 1884 - drafting + DRWP Unclear requirements for same-named external-linkage entities - Not resolved + Unknown 1885 @@ -11132,204 +4589,72 @@ Language linkage for main() Unknown - - 1887 - CD4 - Problems with :: as nested-name-specifier - Unknown - - - 1888 - CD4 - Implicitly-declared default constructors and explicit - Unknown - - - 1889 - drafting - Unclear effect of #pragma on conformance - Not resolved - - - 1890 - drafting - Member type depending on definition of member function - Not resolved - 1891 CD4 Move constructor/assignment for closure class Clang 4 - - 1892 - CD4 - Use of auto in function type - Unknown - 1893 - DRWP + CD5 Function-style cast with braced-init-lists and empty pack expansions Unknown - - 1894 - open - typedef-names and using-declarations - Not resolved - 1895 CD4 Deleted conversions in conditional operator operands Unknown - - 1896 - drafting - Repeated alias templates - Not resolved - 1897 drafting ODR vs alternative tokens Not resolved - + 1898 - drafting + DRWP Use of “equivalent” in overload resolution - Not resolved - - - 1899 - CD4 - Value-dependent constant expressions Unknown - - 1900 - drafting - Do friend declarations count as “previous declarations”? - Not resolved - 1901 drafting punctuator referenced but not defined Not resolved - - 1902 - CD4 - What makes a conversion “otherwise ill-formed”? - Clang 3.7 - - - 1903 - CD4 - What declarations are introduced by a non-member using-declaration? - Unknown - - - 1904 - NAD - Default template arguments for members of class templates - Unknown - - - 1905 - NAD - Dependent types and injected-class-names - Unknown - 1906 NAD Name lookup in member friend declaration Unknown - - 1907 - drafting - using-declarations and default arguments - Not resolved - - + 1908 - drafting + DRWP Dual destructor lookup and template-ids - Not resolved - - - 1909 - CD4 - Member class template with the same name as the class - Yes + Unknown 1910 - DRWP + CD5 “Shall” requirement applied to runtime behavior Unknown - - 1911 - CD4 - constexpr constructor with non-literal base class - Unknown - - - 1912 - extension - exception-specification of defaulted function - Extension - 1913 - DRWP + CD5 decltype((x)) in lambda-expressions Unknown - - 1914 - extension - Duplicate standard attributes - Extension - - - 1915 - extension - Potentially-invoked destructors in non-throwing constructors - Extension - 1916 CD4 “Same cv-unqualified type” Unknown - - 1917 - drafting - decltype-qualified enumeration names - Not resolved - - - 1918 - open - friend templates with dependent scopes - Not resolved - - - 1919 - open - Overload resolution for ! with explicit conversion operator - Not resolved - 1920 CD4 @@ -11342,12 +4667,6 @@ constexpr constructors and point of initialization of const variables Unknown - - 1922 - CD4 - Injected class template names and default arguments - Unknown - 1923 extension @@ -11408,54 +4727,24 @@ Bit-field results of conditional operators Unknown - - 1933 - NAD - Implementation limit for initializer-list elements - Unknown - - - 1934 - extension - Relaxing exception-specification compatibility requirements - Extension - 1935 drafting Reuse of placement arguments in deallocation Not resolved - - 1936 - drafting - Dependent qualified-ids - Not resolved - 1937 - DRWP + CD5 Incomplete specification of function pointer from lambda Unknown 1938 - DRWP + CD5 Should hosted/freestanding be implementation-defined? Unknown - - 1939 - drafting - Argument conversions to nondeduced parameter types revisited - Not resolved - - - 1940 - CD4 - static_assert in anonymous unions - Yes - 1941 CD4 @@ -11468,30 +4757,6 @@ Incorrect reference to trailing-return-type Unknown - - 1943 - open - Unspecified meaning of “bit” - Not resolved - - - 1944 - open - New C incompatibilities - Not resolved - - - 1945 - open - Friend declarations naming members of class templates in non-templates - Not resolved - - - 1946 - CD4 - exception-specifications vs pointer dereference - Unknown - 1947 NAD @@ -11510,12 +4775,6 @@ “sequenced after” instead of “sequenced before” Unknown - - 1950 - NAD - Restructuring description of ranks of conversion sequences - Unknown - 1951 CD4 @@ -11540,78 +4799,36 @@ typeid null dereference check in subexpressions Not resolved - - 1955 - CD4 - #elif with invalid controlling expression - Unknown - 1956 CD4 Reuse of storage of automatic variables Unknown - - 1957 - extension - decltype(auto) with direct-list-initialization - Extension - - - 1958 - CD4 - decltype(auto) with parenthesized initializer - Unknown - 1959 CD4 Inadvertently inherited copy constructor Clang 3.9 - - 1960 - NAD - Visibility of entity named in class-scope using-declaration - Unknown - 1961 C++17 Potentially-concurrent actions within a signal handler Unknown - - 1962 - extension - Type of __func__ - Extension - 1963 CD4 Implementation-defined identifier characters Unknown - - 1964 - NAD - opaque-enum-declaration in alias-declaration? - Unknown - 1965 drafting Explicit casts to reference types Not resolved - - 1966 - CD4 - Colon following enumeration elaborated-type-specifier - Clang 11 - 1967 CD4 @@ -11619,81 +4836,27 @@ Unknown - 1968 - NAD - Address of typeid in constant expressions - No - - - 1969 - open - Missing exclusion of ~S as an ordinary function name - Not resolved - - - 1970 - NAD - Ambiguity resolution for (T())*x - Unknown - - - 1971 - CD4 - Unclear disambiguation of destructor and operator~ - Unknown - - - 1972 - open - Identifier character restrictions in non-identifiers - Not resolved - - - 1973 - drafting - Which parameter-declaration-clause in a lambda-expression? - Not resolved - - - 1974 - open - Redundant specification of non-type typename-specifier - Not resolved - - - 1975 - CD4 - Permissible declarations for exception-specifications - Unknown - - - 1976 - NAD - Ambiguity of namespace-aliases - Unknown - - - 1977 - drafting - Contradictory results of failed destructor lookup - Not resolved + 1968 + NAD + Address of typeid in constant expressions + No - - 1978 + + 1971 CD4 - Redundant description of explicit constructor use + Unclear disambiguation of destructor and operator~ Unknown - - 1979 - drafting - Alias template specialization in template member definition + + 1972 + open + Identifier character restrictions in non-identifiers Not resolved - - 1980 + + 1973 drafting - Equivalent but not functionally-equivalent redeclarations + Which parameter-declaration-clause in a lambda-expression? Not resolved @@ -11702,60 +4865,12 @@ Implicit contextual conversions and explicit Unknown - - 1982 - NAD - Deduction extending parameter pack - Unknown - - - 1983 - DRWP - Inappropriate use of virt-specifier - Unknown - - - 1984 - NAD - Lossless narrowing conversions - Unknown - - - 1985 - NAD - Unknown bound array member with brace-or-equal-initializer - Unknown - 1986 drafting odr-use and delayed initialization Not resolved - - 1987 - NAD - constexpr static data members across translation units - Unknown - - - 1988 - CD4 - Ambiguity between dependent and non-dependent bases in implicit member access - Unknown - - - 1989 - drafting - Insufficient restrictions on parameters of postfix operators - Not resolved - - - 1990 - CD4 - Ambiguity due to optional decl-specifier-seq - Unknown - 1991 CD4 @@ -11768,36 +4883,6 @@ new (std::nothrow) int[N] can throw Unknown - - 1993 - drafting - Use of template<> defining member of explicit specialization - Not resolved - - - 1994 - dup - Confusing wording regarding multiple template<> prefixes - Duplicate of 529 - - - 1995 - CD4 - exception-specifications and non-type template parameters - Unknown - - - 1996 - drafting - Reference list-initialization ignores conversion functions - Not resolved - - - 1997 - drafting - Placement new and previous initialization - Not resolved - 1998 NAD @@ -11816,24 +4901,6 @@ header-name outside #include directive Unknown - - 2001 - CD4 - non-directive is underspecified - Unknown - - - 2002 - open - White space within preprocessing directives - Not resolved - - - 2003 - drafting - Zero-argument macros incorrectly specified - Not resolved - 2004 CD4 @@ -11852,28 +4919,10 @@ Cv-qualified void types Unknown - - 2007 - drafting - Argument-dependent lookup for operator= - Not resolved - - - 2008 - CD4 - Default template-arguments underspecified - Unknown - - + 2009 - open + DRWP Unclear specification of class scope - Not resolved - - - 2010 - CD4 - exception-specifications and conversion operators Unknown @@ -11894,36 +4943,12 @@ Pointer subtraction in large array Not resolved - - 2014 - NAD - Unneeded deallocation signatures - Unknown - - - 2015 - CD4 - odr-use of deleted virtual functions - Unknown - - - 2016 - CD4 - Confusing wording in description of conversion function - Unknown - 2017 CD4 Flowing off end is not equivalent to no-expression return Unknown - - 2018 - drafting - Qualification conversion vs reference binding - Not resolved - 2019 CD4 @@ -11932,16 +4957,10 @@ 2020 - DRWP + CD5 Inadequate description of odr-use of implicitly-invoked functions Unknown - - 2021 - dup - Function template redeclaration via alias template - Unknown - 2022 CD4 @@ -11954,162 +4973,48 @@ Composite reference result type of conditional operator Not resolved - - 2024 - CD4 - Dependent types and unexpanded parameter packs - Unknown - - - 2025 - dup - Declaration matching via alias templates - Unknown - 2026 CD4 Zero-initialization and constexpr Clang 11 - - 2027 - CD4 - Unclear requirements for multiple alignas specifiers - Unknown - - - 2028 - drafting - Converting constructors in rvalue reference initialization - Not resolved - 2029 dup Abstract class return type in decltype operand Unknown - - 2030 - NAD - Access of injected-class-name with template arguments - Unknown - - - 2031 - CD4 - Missing incompatibility for && - Unknown - - - 2032 - CD4 - Default template-arguments of variable templates - Unknown - 2033 CD4 Redundant restriction on partial specialization argument Unknown - - 2034 - NAD - Deprecating uncaught_exception() - Unknown - 2035 CD3 Multi-section example is confusing Unknown - - 2036 - NAD - Refactoring parameters-and-qualifiers - Unknown - - - 2037 - drafting - Alias templates and template declaration matching - Not resolved - - - 2038 - CD4 - Document C++14 incompatibility of new braced deduction rule - Unknown - - - 2039 - CD4 - Constant conversions to bool - Unknown - - - 2040 - CD4 - trailing-return-type no longer ambiguous - Unknown - - - 2041 - CD4 - Namespace for explicit class template specialization - Unknown - 2042 drafting Exceptions and deallocation functions Not resolved - - 2043 - drafting - Generalized template arguments and array-to-pointer decay - Not resolved - - - 2044 - CD4 - decltype(auto) and void - Unknown - - - 2045 - drafting - “Identical” template parameter lists - Not resolved - 2046 C++17 Incomplete thread specifications Unknown - - 2047 - CD4 - Coordinating “throws anything” specifications - Unknown - 2048 open C-style casts that cast away constness vs static_cast Not resolved - - 2049 - drafting - List initializer in non-type template default argument - Not resolved - 2050 NAD @@ -12118,208 +5023,46 @@ 2051 - DRWP + CD5 Simplifying alias rules Unknown - - 2052 - CD4 - Template argument deduction vs overloaded operators - Unknown - - - 2053 - DR - auto in non-generic lambdas - Unknown - - - 2054 - open - Missing description of class SFINAE - Not resolved - - - 2055 - drafting - Explicitly-specified non-deduced parameter packs - Not resolved - - - 2056 - drafting - Member function calls in partially-initialized class objects - Not resolved - - - 2057 - drafting - Template template arguments with default arguments - Not resolved - - + 2058 - drafting - More errors from internal-linkage namespaces - Not resolved - - - 2059 DRWP - Linkage and deduced return types - Unknown - - - 2060 - NAD - Deduced return type for explicit specialization - Unknown - - - 2061 - CD4 - Inline namespace after simplifications + More errors from internal-linkage namespaces Unknown - - 2062 - drafting - Class template redeclaration requirements - Not resolved - 2063 CD4 Type/nontype hiding in class scope Unknown - - 2064 - CD4 - Conflicting specifications for dependent decltype-specifiers - Unknown - - - 2065 - drafting - Current instantiation of a partial specialization - Not resolved - - - 2066 - CD4 - Does type-dependent imply value-dependent? - Unknown - - - 2067 - open - Generated variadic templates requiring empty pack - Not resolved - - - 2068 - CD4 - When can/must a defaulted virtual destructor be defined? - Unknown - - - 2069 - CD4 - Do destructors have names? - Unknown - - + 2070 - drafting + DRWP using-declaration with dependent nested-name-specifier - Not resolved - - - 2071 - CD4 - typedef with no declarator Unknown - - 2072 - drafting - Default argument instantiation for member functions of templates - Not resolved - 2073 drafting Allocating memory for exception objects Not resolved - - 2074 - drafting - Type-dependence of local class of function template - Not resolved - - - 2075 - CD4 - Passing short initializer lists to array reference parameters - Unknown - - - 2076 - CD4 - List-initialization of arguments for constructor parameters - Unknown - - - 2077 - drafting - Overload resolution and invalid rvalue-reference initialization - Not resolved - 2078 NAD Name lookup of mem-initilizer-id Unknown - - 2079 - CD4 - [[ appearing in a balanced-token-seq - Unknown - - - 2080 - drafting - Example with empty anonymous union member - Not resolved - - - 2081 - DRWP - Deduced return type in redeclaration or specialization of function template - Unknown - - - 2082 - CD4 - Referring to parameters in unevaluated operands of default arguments - Clang 11 - 2083 - DRWP + CD5 Incorrect cases of odr-use Partial - - 2084 - CD4 - NSDMIs and deleted union default constructors - Unknown - 2085 CD4 @@ -12329,49 +5072,13 @@ 2086 drafting - Reference odr-use vs implicit capture - Not resolved - - - 2087 - NAD - Left shift of negative value by zero bits - Unknown - - - 2088 - DRWP - Late tiebreakers in partial ordering - Unknown - - - 2089 - drafting - Restricting selection of builtin overloaded operators - Not resolved - - - 2090 - drafting - Dependency via non-dependent base class - Not resolved - - - 2091 - CD4 - Deducing reference non-type template arguments - Unknown - - - 2092 - DRWP - Deduction failure and overload resolution - Unknown + Reference odr-use vs implicit capture + Not resolved - - 2093 - CD4 - Qualification conversion for pointer-to-member handler matching + + 2087 + NAD + Left shift of negative value by zero bits Unknown @@ -12398,30 +5105,6 @@ Lambdas and noreturn attribute Extension - - 2098 - CD4 - Is uncaught_exceptions() per-thread? - Unknown - - - 2099 - CD4 - Inferring the bound of an array static data member - Unknown - - - 2100 - C++17 - Value-dependent address of static data member of class template - Clang 12 - - - 2101 - CD4 - Incorrect description of type- and value-dependence - Unknown - 2102 drafting @@ -12430,7 +5113,7 @@ 2103 - DRWP + CD5 Lvalue-to-rvalue conversion is irrelevant in odr-use of a reference Yes @@ -12440,58 +5123,16 @@ Internal-linkage constexpr references and ODR requirements Unknown - - 2105 - open - When do the arguments for a parameter pack end? - Not resolved - - - 2106 - CD4 - Unclear restrictions on use of function-type template arguments - Unknown - 2107 CD4 Lifetime of temporaries for default arguments in array copying Unknown - - 2108 - drafting - Conversions to non-class prvalues in reference initialization - Not resolved - - - 2109 - CD4 - Value dependence underspecified - Unknown - - - 2110 - drafting - Overload resolution for base class conversion and reference/non-reference - Not resolved - - - 2111 - extension - Array temporaries in reference binding - Extension - - + 2112 - drafting + CD5 new auto{x} - Not resolved - - - 2113 - CD4 - Incompete specification of types for declarators Unknown @@ -12506,41 +5147,17 @@ Order of implicit destruction vs release of automatic storage Not resolved - - 2116 - drafting - Direct or copy initialization for omitted aggregate initializers - Not resolved - - - 2117 - drafting - Explicit specializations and constexpr function templates - Not resolved - 2118 open Stateful metaprogramming via friend injection Not resolved - - 2119 - NAD - Disambiguation of multi-level covariant return type - Unknown - - - 2120 - CD4 - Array as first non-static data member in standard-layout class - Clang 7 - - + 2121 - drafting + WP More flexible lambda syntax - Not resolved + Unknown 2122 @@ -12568,9 +5185,9 @@ 2126 - DRWP + C++20 Lifetime-extended temporaries in constant expressions - Clang 12 + Clang 12 2127 @@ -12578,12 +5195,6 @@ Partial specialization and nullptr Not resolved - - 2128 - drafting - Imprecise rule for reference member initializer - Not resolved - 2129 CD4 @@ -12596,12 +5207,6 @@ Over-aligned types in new-expressions Unknown - - 2131 - drafting - Ambiguity with opaque-enum-declaration - Not resolved - 2132 extension @@ -12610,7 +5215,7 @@ 2133 - DRWP + CD5 Converting std::nullptr_t to bool Unknown @@ -12620,30 +5225,12 @@ Objectless references to non-static member functions Unknown - - 2135 - NAD - mem-initializers for virtual bases of abstract classes - Unknown - 2136 NAD Argument-dependent lookup and initializer lists Unknown - - 2137 - CD4 - List-initialization from object of same type - Unknown - - - 2138 - NAD - Explicit member specialization vs implicit instantiation - Unknown - 2139 NAD @@ -12668,54 +5255,18 @@ Missing definition of associated classes and namespaces Unknown - - 2143 - C++17 - Value-dependency via injected-class-name - Unknown - - - 2144 - drafting - Function/variable declaration ambiguity - Not resolved - - - 2145 - CD4 - Parenthesized declarator in function definition - Unknown - 2146 CD4 Scalar object vs memory location in definition of “unsequenced” Unknown - - 2147 - CD4 - Initializer-list arguments and pack deduction - Unknown - 2148 drafting Thread storage duration and order of initialization Not resolved - - 2149 - drafting - Brace elision and array length deduction - Not resolved - - - 2150 - CD3 - Initializer list array lifetime - Unknown - 2151 CD4 @@ -12728,83 +5279,35 @@ Can an alternative token be used as a ud-suffix? Unknown - - 2153 - CD4 - pure-specifier in friend declaration - Unknown - - - 2154 - CD4 - Ambiguity of pure-specifier - Unknown - 2155 C++17 Defining classes and enumerations via using-declarations Unknown - - 2156 - CD4 - Definition of enumeration declared by using-declaration - Unknown - - - 2157 - CD4 - Further disambiguation of enumeration elaborated-type-specifier - Clang 11 - - - 2158 - drafting - Polymorphic behavior during destruction - Not resolved - 2159 NAD Lambda capture and local thread_local variables Unknown - - 2160 - open - Issues with partial ordering - Not resolved - - - 2161 - NAD - Explicit instantiation declaration and “preceding initialization” - Unknown - 2162 CD3 Capturing this by reference Unknown - - 2163 - CD4 - Labels in constexpr functions - Unknown - 2164 - DRWP + CD5 Name hiding and using-directives Unknown - + 2165 - drafting + DRWP Namespaces, declarative regions, and translation units - Not resolved + Unknown 2166 @@ -12818,21 +5321,9 @@ Non-member references with lifetimes within the current evaluation Unknown - - 2168 - open - Narrowing conversions and +/- infinity - Not resolved - - - 2169 - extension - Narrowing conversions and overload resolution - Extension - 2170 - DRWP + CD5 Unclear definition of odr-use for arrays Clang 9 @@ -12842,30 +5333,12 @@ Triviality of copy constructor with less-qualified parameter Unknown - - 2172 - drafting - Multiple exceptions with one exception object - Not resolved - 2173 open Partial specialization with non-deduced contexts Not resolved - - 2174 - C++17 - Unclear rules for friend definitions in templates - Unknown - - - 2175 - CD4 - Ambiguity with attribute in conversion operator declaration - Unknown - 2176 CD4 @@ -12874,16 +5347,10 @@ 2177 - DRWP + CD5 Placement operator delete and parameter copies Unknown - - 2178 - NAD - Substitution of dependent template arguments in default template arguments - Unknown - 2179 drafting @@ -12896,30 +5363,12 @@ Virtual bases in destructors and defaulted assignment operators Yes - - 2181 - drafting - Normative requirements in an informative Annex - Not resolved - 2182 drafting Pointer arithmetic in array-like containers Not resolved - - 2183 - NAD - Problems in description of potential exceptions - Unknown - - - 2184 - CD4 - Missing C compatibility entry for decrement of bool - Unknown - 2185 open @@ -12932,66 +5381,12 @@ Unclear point that “preceding initialization” must precede Not resolved - - 2187 - drafting - Protected members and access via qualified-id - Not resolved - - - 2188 - open - empty-declaration ambiguity - Not resolved - - - 2189 - open - Surrogate call template - Not resolved - - - 2190 - open - Insufficient specification of __has_include - Not resolved - - - 2191 - C++17 - Incorrect result for noexcept(typeid(v)) - Unknown - 2192 open Constant expressions and order-of-eval undefined behavior Not resolved - - 2193 - NAD - numeric_limits<int>::radix and digits - Unknown - - - 2194 - review - Impossible case in list initialization - Not resolved - - - 2195 - open - Unsolicited reading of trailing volatile members - Not resolved - - - 2196 - C++17 - Zero-initialization with virtual base classes - Unknown - 2197 review @@ -13004,118 +5399,40 @@ Linkage of enumerators Unknown - - 2199 - drafting - Typedefs and tags - Not resolved - - - 2200 - NAD - Conversions in template argument deduction - Unknown - 2201 C++17 Cv-qualification of array types Unknown - - 2202 - drafting - When does default argument instantiation occur? - Not resolved - 2203 drafting Defaulted copy/move constructors and UDCs Not resolved - - 2204 - NAD - Naming delegated constructors - Unknown - - - 2205 - C++17 - Restrictions on use of alignas - Unknown - - - 2206 - C++17 - Composite type of object and function pointers - Unknown - 2207 - DRWP + CD5 Alignment of allocation function return value Unknown - - 2208 - NAD - static_assert-declaration does not declare a member - Unknown - - - 2209 - NAD - Destruction of constructed array elements - Unknown - - - 2210 - NAD - Principal/target constructor confusion - Unknown - 2211 C++17 Hiding by lambda captures and parameters Clang 8 - - 2212 - open - Typedef changing linkage after use - Not resolved - - - 2213 - drafting - Forward declaration of partial specializations - Not resolved - 2214 C++17 Missing requirement on representation of integer values Unknown - + 2215 - review + C++17 Redundant description of language linkage in function call - Not resolved - - - 2216 - NAD - Exception specifications in unevaluated contexts - Unknown - - - 2217 - NAD - constexpr constructors for non-literal types Unknown @@ -13124,36 +5441,12 @@ Ambiguity and namespace aliases Unknown - - 2219 - drafting - Dynamically-unreachable handlers - Not resolved - 2220 C++17 Hiding index variable in range-based for Unknown - - 2221 - review - Copying volatile objects - Not resolved - - - 2222 - drafting - Additional contexts where instantiation is not required - Not resolved - - - 2223 - drafting - Multiple alignas specifiers - Not resolved - 2224 C++17 @@ -13168,28 +5461,10 @@ 2226 - DRWP + CD5 Xvalues vs lvalues in conditional expressions Unknown - - 2227 - DRWP - Destructor access and default member initializers - Unknown - - - 2228 - review - Ambiguity resolution for cast to function type - Not resolved - - - 2229 - DRWP - Volatile unnamed bit-fields - Clang 7 - 2230 NAD @@ -13205,39 +5480,10 @@ 2232 open - thread_local anonymous unions - Not resolved - - - 2233 - DRWP - Function parameter packs following default arguments - Clang 11 - - - 2234 - DRWP - Missing rules for simple-template-id as class-name - Unknown - - - 2235 - DRWP - Partial ordering and non-dependent types - Unknown - - - 2236 - drafting - When is an alias template specialization dependent? + thread_local anonymous unions + Not resolved - - 2237 - WP - Can a template-id name a constructor? - Unknown - 2238 NAD @@ -13258,7 +5504,7 @@ 2241 - DRWP + CD5 Overload resolution is not invoked with a single function Unknown @@ -13274,24 +5520,6 @@ Incorrect use of implicit conversion sequence Not resolved - - 2244 - open - Base class access in aggregate initialization - Not resolved - - - 2245 - drafting - Point of instantiation of incomplete class template - Not resolved - - - 2246 - drafting - Access of indirect virtual base class constructors - Not resolved - 2247 C++17 @@ -13306,55 +5534,19 @@ 2249 - DRWP + CD5 identifiers and id-expressions Unknown - - 2250 - open - Implicit instantiation, destruction, and TUs - Not resolved - - - 2251 - C++17 - Unreachable enumeration list-initialization - Unknown - - - 2252 - review - Enumeration list-initialization from the same type - Not resolved - - - 2253 - DRWP - Unnamed bit-fields and zero-initialization - Unknown - - - 2254 - DRWP - Standard-layout classes and bit-fields - Unknown - - - 2255 - DRWP - Instantiated static data member templates - Unknown - 2256 - DRWP + CD5 Lifetime of trivially-destructible objects Unknown 2257 - DRWP + CD5 Lifetime extension of references vs exceptions Unknown @@ -13364,135 +5556,27 @@ Storage deallocation during period of destruction Not resolved - - 2259 - C++17 - Unclear context describing ambiguity - Unknown - - - 2260 - DRWP - Explicit specializations of deleted member functions - Unknown - - - 2261 - extension - Explicit instantiation of in-class friend definition - Extension - - - 2262 - C++17 - Attributes for asm-definition - Unknown - - - 2263 - drafting - Default argument instantiation for friends - Not resolved - 2264 drafting Memberwise copying with indeterminate value Not resolved - - 2265 - drafting - Delayed pack expansion and member redeclarations - Not resolved - - - 2266 - DRWP - Has dependent type vs is type-dependent - Unknown - - - 2267 - DRWP - Copy-initialization of temporary in reference direct-initialization - Unknown - - - 2268 - C++17 - Unions with mutable members in constant expressions revisited - Unknown - - - 2269 - dup - Additional recursive references in aggregate DMIs - Unknown - - - 2270 - extension - Non-inline functions and explicit instantiation declarations - Extension - - - 2271 - C++17 - Aliasing this - Unknown - - - 2272 - C++17 - Implicit initialization of aggregate members of reference type - Unknown - - - 2273 - DRWP - Inheriting constructors vs implicit default constructor - Unknown - 2274 NAD Generic lambda capture vs constexpr if Unknown - - 2275 - drafting - Type-dependence of function template - Not resolved - - - 2276 - C++17 - Dependent noexcept and function type-dependence - Unknown - - - 2277 - DRWP - Ambiguity inheriting constructors with default arguments - Unknown - 2278 - DRWP + CD5 Copy elision in constant expressions reconsidered Unknown - - 2279 - NAD - Multiple attribute-specifiers in one attribute-list - Unknown - 2280 - DRWP + C++20 Matching a usual deallocation function with placement new Unknown @@ -13504,7 +5588,7 @@ 2282 - DRWP + C++20 Consistency with mismatched aligned/non-over-aligned allocation/deallocation functions Unknown @@ -13520,12 +5604,6 @@ Sequencing of braced-init-list arguments Not resolved - - 2285 - DRWP - Issues with structured bindings - Unknown - 2286 NAD @@ -13534,64 +5612,16 @@ 2287 - DRWP + CD5 Pointer-interconvertibility in non-standard-layout unions Unknown - - 2288 - NAD - Contradictory optionality in simple-declaration - Unknown - 2289 - DRWP + CD5 Uniqueness of structured binding names Unknown - - 2290 - DRWP - Unclear specification for overload resolution and deleted special member functions - Unknown - - - 2291 - dup - Implicit conversion sequences in non-call contexts - Unknown - - - 2292 - DRWP - simple-template-id is ambiguous between class-name and type-name - Clang 9 - - - 2293 - DRWP - Requirements for simple-template-id used as a class-name - Unknown - - - 2294 - DRWP - Dependent auto static data members - Unknown - - - 2295 - extension - Aggregates with deleted defaulted constructors - Extension - - - 2296 - extension - Are default argument instantiation failures in the “immediate context”? - Extension - 2297 open @@ -13604,15 +5634,9 @@ Actions and expression evaluation Not resolved - - 2299 - DRWP - constexpr vararg functions - Unknown - 2300 - DRWP + CD5 Lambdas in multiple definitions Unknown @@ -13628,81 +5652,15 @@ Address comparison between different member subobjects Unknown - - 2303 - DRWP - Partial ordering and recursive variadic inheritance - Clang 12 - - - 2304 - NAD - Incomplete type vs overload resolution - Unknown - - - 2305 - DRWP - Explicit instantiation of constexpr or inline variable template - Unknown - - - 2306 - NAD - Nested friend templates of class templates - Unknown - - - 2307 - DRWP - Unclear definition of “equivalent to a nontype template parameter” - Unknown - - - 2308 - NAD - Structured bindings and lambda capture - Unknown - - - 2309 - DRWP - Restrictions on nested statements within constexpr functions - Unknown - 2310 - DRWP + CD5 Type completeness and derived-to-base pointer conversions Unknown - - 2311 - open - Missed case for guaranteed copy elision - Not resolved - - - 2312 - drafting - Structured bindings and mutable - Not resolved - - - 2313 - DRWP - Redeclaration of structured binding reference variables - Unknown - - - 2314 - dup - Structured bindings and lambda capture - Unknown - 2315 - DRWP + CD5 What is the “corresponding special member” of a variant member? Unknown @@ -13712,24 +5670,6 @@ Simplifying class conversions in conditional expressions Not resolved - - 2317 - DRWP - Self-referential default member initializers - Unknown - - - 2318 - DRWP - Nondeduced contexts in deduction from a braced-init-list - Unknown - - - 2319 - drafting - Nested brace initialization from same type - Not resolved - 2320 extension @@ -13738,19 +5678,13 @@ 2321 - DRWP + CD5 Conditional operator and cv-qualified class prvalues Unknown - - 2322 - DRWP - Substitution failure and lexical order - Unknown - 2323 - WP + C++20 Expunge POD Unknown @@ -13766,53 +5700,17 @@ std::launder and reuse of character buffers Not resolved - - 2326 - dup - Type deduction with initializer list containing ambiguous functions - Unknown - - - 2327 - drafting - Copy elision for direct-initialization with a conversion function - Not resolved - - - 2328 - drafting - Unclear presentation style of template argument deduction rules - Not resolved - - - 2329 - drafting - Virtual base classes and generated assignment operators - Not resolved - - - 2330 - DRWP - Missing references to variable templates - Unknown - - + 2331 - drafting - Redundancy in description of class scope - Not resolved - - - 2332 DRWP - template-name as simple-type-name vs injected-class-name + Redundancy in description of class scope Unknown - + 2333 - drafting + WP Escape sequences in UTF-8 character literals - Not resolved + Unknown 2334 @@ -13820,60 +5718,18 @@ Creation of objects by typeid Not resolved - - 2335 - drafting - Deduced return types vs member types - Not resolved - - - 2336 - DRWP - Destructor characteristics vs potentially-constructed subobjects - Unknown - - - 2337 - open - Incorrect implication of logic ladder for conversion sequence tiebreakers - Not resolved - 2338 - DRWP + CD5 Undefined behavior converting to short enums with fixed underlying types - Clang 12 - - - 2339 - DRWP - Underspecified template arguments in structured bindings - Unknown - - - 2340 - open - Reference collapsing and structured bindings - Not resolved - - - 2341 - extension - Structured bindings with static storage duration - Extension + Clang 12 2342 - DRWP + CD5 Reference reinterpret_cast and pointer-interconvertibility Unknown - - 2343 - extension - void* non-type template parameters - Extension - 2344 NAD @@ -13886,15 +5742,9 @@ Jumping across initializers in init-statements and conditions Not resolved - - 2346 - DRWP - Local variables in default arguments - Clang 11 - 2347 - DRWP + C++20 Passing short scoped enumerations to ellipsis Unknown @@ -13904,264 +5754,120 @@ Non-templated constexpr if Unknown - - 2349 - NAD - Class/enumeration names vs conditions - Unknown - - - 2350 - NAD - Forwarding references and deduction guides - Unknown - 2351 - DRWP + CD5 void{} Unknown - - 2352 - DRWP - Similar types and reference binding - Clang 10 - 2353 - DRWP + CD5 Potential results of a member access expression for a static data member Clang 9 2354 - DRWP + CD5 Extended alignment and object representation Unknown - - 2355 - extension - Deducing noexcept-specifiers - Extension - - - 2356 - DRWP - Base class copy and move constructors should not be inherited - Unknown - 2357 NAD Lookup in member function declarations Unknown - - 2358 - DRWP - Explicit capture of value - Unknown - - - 2359 - WP - Unintended copy initialization with designated initializers - Unknown - - - 2360 - DRWP - [[maybe_unused]] and structured bindings - Unknown - - - 2361 - open - Unclear description of longjmp undefined behavior - Not resolved - - - 2362 - extension - __func__ should be constexpr - Extension - - - 2363 - NAD - Opaque enumeration friend declarations + + 2358 + CD5 + Explicit capture of value Unknown - + 2364 - drafting + NAD Constant expressions, aggregate initialization, and modifications - Not resolved + Unknown 2365 - DRWP + CD5 Confusing specification for dynamic_cast Unknown 2366 - DRWP + CD5 Can default initialization be constant initialization? Unknown - + 2367 - open + NAD Lambdas in default arguments vs the ODR - Not resolved + Unknown 2368 - DRWP + CD5 Differences in relational and three-way constant comparisons Unknown - - 2369 - drafting - Ordering between constraints and substitution - Not resolved - - + 2370 - drafting + DRWP friend declarations of namespace-scope functions - Not resolved + Unknown - + 2371 - open + CD5 Use of the English term “attributes” is confusing - Not resolved + Unknown 2372 - DRWP + CD5 Incorrect matching rules for block-scope extern declarations Unknown - - 2373 - DRWP - Incorrect handling of static member function templates in partial ordering - Unknown - - - 2374 - DRWP - Overly permissive specification of enum direct-list-initialization - Unknown - - - 2375 - NAD - Multiple redeclarations of constexpr static data members - Unknown - - - 2376 - DRWP - Class template argument deduction with array declarator - Unknown - - - 2377 - NAD - Explicit copy constructor vs function viability - Unknown - 2378 - accepted + C++20 Inconsistent grammar for reference init-capture of pack Unknown - - 2379 - DRWP - Missing prohibition against constexpr in friend declaration - Unknown - 2380 - DRWP + CD5 capture-default makes too many references odr-usable Unknown 2381 - DRWP + CD5 Composite pointer type of pointers to plain and noexcept member functions Unknown 2382 - DRWP + CD5 Array allocation overhead for non-allocating placement new Unknown - - 2383 - NAD - Variadic member functions of variadic class templates - Unknown - - - 2384 - DRWP - Conversion function templates and qualification conversions - Unknown - 2385 - DRWP + CD5 Lookup for conversion-function-ids Unknown - - 2386 - DRWP - tuple_size requirements for structured binding - Clang 9 - 2387 - DRWP + CD5 Linkage of const-qualified variable template Clang 9 - - 2388 - NAD - Applicability of contract-attribute-specifiers - Unknown - - - 2389 - open - Agreement of deduced and explicitly-specified variable types - Not resolved - - - 2390 - DRWP - Is the argument of __has_cpp_attribute macro-expanded? - Unknown - - - 2391 - DUP - Additional template parameters following pack expansion - Unknown - 2392 open @@ -14174,243 +5880,63 @@ Pseudo-destructors and object lifetime Unknown - - 2394 - DRWP - Const-default-constructible for members - Unknown - - - 2395 - open - Parameters following a pack expansion - Not resolved - - + 2396 - open + DRWP Lookup of names in complex conversion-type-ids - Not resolved - - - 2397 - drafting - auto specifier for pointers and references to arrays - Not resolved - - - 2398 - open - Template template parameter matching and deduction - Not resolved + Unknown 2399 - DRWP + CD5 Unclear referent of “expression” in assignment-expression Unknown 2400 - DRWP + CD5 Constexpr virtual functions and temporary objects Unknown - - 2401 - open - Array decay vs prohibition of subobject non-type arguments - Not resolved - - + 2402 - drafting + WP When is the restriction to a single c-char in a Unicode literal enforced? - Not resolved - - - 2403 - open - Temporary materialization and base/member initialization - Not resolved - - - 2404 - DRWP - [[no_unique_address]] and allocation order - Unknown - - - 2405 - drafting - Additional type-dependent expressions - Not resolved - - - 2406 - DRWP - [[fallthrough]] attribute and iteration statements - Unknown - - - 2407 - review - Missing entry in Annex C for defaulted comparison operators - Not resolved - - - 2408 - open - Temporaries and previously-initialized elements in aggregate initialization - Not resolved - - - 2409 - drafting - Explicit specializations of constexpr static data members - Not resolved - - - 2410 - review - Implicit calls of immediate functions - Not resolved - - - 2411 - open - Comparison of pointers to members in template non-type arguments - Not resolved - - - 2412 - open - SFINAE vs undeduced placeholder type - Not resolved - - - 2413 - drafting - typename in conversion-function-ids - Not resolved - - - 2414 - drafting - Unclear results if both member and friend operator<=> are declared - Not resolved - - - 2415 - NAD - using-declarations vs copy assignment operators - Unknown - - - 2416 - DRWP - Explicit specializations vs constexpr and consteval Unknown - - 2417 - open - Explicit instantiation and exception specifications - Not resolved - 2418 - DRWP + CD5 Missing cases in definition of “usable in constant expressions” Unknown 2419 - DRWP + C++20 Loss of generality treating pointers to objects as one-element arrays Unknown - - 2420 - open - Exception specifications in explicit instantiation - Not resolved - - - 2421 - open - Explicit instantiation of constrained member functions - Not resolved - - - 2422 - DRWP - Incorrect grammar for deduction-guide - Unknown - - - 2423 - NAD - Typedefs, names, and entities - Unknown - - - 2424 - DRWP - constexpr initialization requirements for variant members - Unknown - - - 2425 - open - Confusing wording for deduction from a type - Not resolved - - - 2426 - DRWP - Reference to destructor that cannot be invoked - Unknown - 2427 - DRWP + C++20 Deprecation of volatile operands and unevaluated contexts Unknown - - 2428 - open - Deprecating a concept - Not resolved - 2429 - DRWP + C++20 Initialization of thread_local variables referenced by lambdas Unknown - - 2430 - DRWP - Completeness of return and parameter types of member functions - Unknown - 2431 - DRWP + C++20 Full-expressions and temporaries bound to references Unknown - - 2432 - DRWP - Return types for defaulted <=> - Unknown - 2433 - DRWP + C++20 Variable templates in the ODR Unknown @@ -14420,24 +5946,6 @@ Mandatory copy elision vs non-class objects Not resolved - - 2435 - open - Alias template specializations - Not resolved - - - 2436 - accepted - Copy semantics of coroutine parameters - Unknown - - - 2437 - DRWP - Conversion of std::strong_ordering in a defaulted operator<=> - Unknown - 2438 open @@ -14446,7 +5954,7 @@ 2439 - DRWP + C++20 Undefined term in definition of “usable in constant expressions” Unknown @@ -14456,66 +5964,168 @@ Allocation in core constant expressions Not resolved - - 2441 - DRWP - Inline function parameters + + 2444 + drafting + Constant expressions in initialization odr-use + Not resolved + + + 2448 + DR + Cv-qualification of arithmetic types and deprecation of volatile Unknown - - 2442 + + 2449 + extension + Thunks as an implementation technique for pointers to virtual functions + Extension + + + 2452 DRWP - Incorrect requirement for default arguments + Flowing off the end of a coroutine Unknown - - 2443 - open - Meaningless template exports + + 2454 + NAD + Tail recursion and coroutine symmetric transfer + Unknown + + + 2455 + drafting + Concatenation of string literals vs translation phases 5 and 6 Not resolved - - 2444 + + 2456 open - Constant expressions in initialization odr-use + Viable user-defined conversions in converted constant expressions + Not resolved + + + 2458 + DR + Value category of expressions denoting non-static member functions + Unknown + + + 2466 + DR + co_await should be a single evaluation + Unknown + + + 2469 + drafting + Implicit object creation vs constant expressions Not resolved - - 2445 - - Partial ordering with rewritten candidates + + 2470 + DRWP + Multiple array objects providing storage for one object Unknown - - 2446 - accepted - Questionable type-dependency of concept-ids + + 2472 + NAD + Value categories in await-expressions Unknown - - 2447 - accepted - Unintended description of abbreviated function templates + + 2473 + drafting + Parentheses in pseudo-destructor calls + Not resolved + + + 2474 + DR + Cv-qualification and deletion Unknown - - 2448 + + 2475 open - Cv-qualification of arithmetic types and deprecation of volatile + Object declarations of type cv void Not resolved - - 2449 + + 2479 + DR + Missing specifications for consteval and constinit + Unknown + + + 2480 + drafting + Lookup for enumerators in modules + Not resolved + + + 2484 open - Thunks as an implementation technique for pointers to virtual functions + char8_t and char16_t in integral promotions + Not resolved + + + 2485 + open + Bit-fields in integral promotions + Not resolved + + + 2486 + drafting + Call to noexcept function via noexcept(false) pointer/lvalue + Not resolved + + + 2488 + NAD + Overloading virtual functions and functions with trailing requires-clauses + Unknown + + + 2489 + open + Storage provided by array of char + Not resolved + + + 2490 + drafting + Restrictions on destruction in constant expressions + Not resolved + + + 2494 + drafting + Multiple definitions of non-odr-used entities + Not resolved + + + 2495 + review + Glvalue result of a function call Not resolved - - 2450 + + 2499 open - braced-init-list as a template-argument + Inconsistency in definition of pointer-interconvertibility Not resolved + + 2500 + extension + noexcept(false) functions and noexcept expressions + Extension + Index: clang/www/make_cxx_dr_status =================================================================== --- clang/www/make_cxx_dr_status +++ clang/www/make_cxx_dr_status @@ -92,7 +92,7 @@ Available in Clang? ''' -latest_release = 11 +latest_release = 13 def availability(issue): status = status_map.get(issue, 'unknown')