From 8dd42ffc09e30b1bf936f5da1aa104916e50d2fa Mon Sep 17 00:00:00 2001 From: Erich Keane Date: Fri, 24 Sep 2021 08:31:26 -0700 Subject: [PATCH] Write test for CWG1772/CWG1762/CWG1779, mark them 'done', and update cxx_dr_status.html I noticed that these two DRs are currently working correctly, so I added a pair of lit tests that check the AST (which is most useful for CWG1779, since 'dependent' is really only observable in an ast dump) to make sure __func__ works correctly in dependent cases, and in lambda operator(). Also noticed that CWG1762, mostly an 'example' change, works correctly, so added a test so that it gets marked 'done' as well. Additionally, I regenerated cxx_dr_status.html, updating it for Clang 13's release, based on the cwg_status.html from August 12, 2021. Differential Revision: https://reviews.llvm.org/D109956 --- clang/test/CXX/drs/dr177x.cpp | 78 +++ clang/test/CXX/drs/dr17xx.cpp | 9 + clang/www/cxx_dr_status.html | 1288 +++++++++++++++++++++++++---------------- clang/www/make_cxx_dr_status | 2 +- 4 files changed, 885 insertions(+), 492 deletions(-) create mode 100644 clang/test/CXX/drs/dr177x.cpp diff --git a/clang/test/CXX/drs/dr177x.cpp b/clang/test/CXX/drs/dr177x.cpp new file mode 100644 index 0000000..0ac4dea --- /dev/null +++ b/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 +} diff --git a/clang/test/CXX/drs/dr17xx.cpp b/clang/test/CXX/drs/dr17xx.cpp index c9f5b2d..42303c8 100644 --- a/clang/test/CXX/drs/dr17xx.cpp +++ b/clang/test/CXX/drs/dr17xx.cpp @@ -125,3 +125,12 @@ namespace dr1778 { // dr1778: 9 static_assert(noexcept(D()), ""); #endif } + +namespace dr1762 { // dr1762: 14 +#if __cplusplus >= 201103L + float operator ""_E(const char *); + // expected-error@+2 {{invalid suffix on literal; c++11 requires a space between literal and identifier}} + // expected-warning@+1 {{user-defined literal suffixes not starting with '_' are reserved; no literal will invoke this operator}} + float operator ""E(const char *); +#endif +} diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index da63e2e..510c0d5 100755 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -250,11 +250,11 @@ Definition of default-initialization Duplicate of 178 - + 36 - open + DRWP using-declarations in multiple-declaration contexts - Not resolved + Unknown 37 @@ -694,11 +694,11 @@ Allowing ::template in using-declarations Yes - + 110 - open + DRWP Can template functions and classes be declared in the same scope? - Not resolved + Unknown 111 @@ -824,7 +824,7 @@ 131 TC1 Typo in Lao characters - Superseded by P1949 + Superseded by P1949 132 @@ -862,11 +862,11 @@ static_cast of cv void* Yes - + 138 - drafting + DRWP Friend declaration name lookup - Not resolved + Unknown 139 @@ -970,11 +970,11 @@ Brace initializer for scalar Duplicate of 632 - + 156 - drafting + NAD Name lookup for conversion functions - Not resolved + Unknown 157 @@ -1180,17 +1180,17 @@ 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 + Unknown 193 @@ -1527,7 +1527,7 @@ accessible? 248 C++11 Identifier characters - Superseded by P1949 + Superseded by P1949 249 @@ -1565,11 +1565,11 @@ accessible? Definitional problems with elaborated-type-specifiers Yes - + 255 - drafting + DRWP Placement deallocation functions and lookup ambiguity - Not resolved + Unknown 256 @@ -1662,11 +1662,11 @@ of class templates Order of initialization of static data members of class templates N/A - + 271 - open + DRWP Explicit instantiation and template argument deduction - Not resolved + Unknown 272 @@ -1704,17 +1704,17 @@ of class templates 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 + Unknown 280 @@ -1818,11 +1818,11 @@ of class templates Can conversion functions be static? Yes - + 297 - open + NAD Which template does an explicit specialization specialize? - Not resolved + Unknown 298 @@ -2064,11 +2064,11 @@ of class templates 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 @@ -2196,11 +2196,11 @@ of class templates Type definition in anonymous union Yes - + 360 - open + DRWP Using-declaration that reduces access - Not resolved + Unknown 361 @@ -2352,11 +2352,11 @@ of class templates How does protected member check of 11.5 interact with using-declarations? Yes - + 386 - drafting + DRWP Friend declaration of name brought in by using-declaration - Not resolved + Unknown 387 @@ -2430,11 +2430,11 @@ of class templates Ambiguous wording on naming a type in deduction Yes - + 399 - drafting + DRWP Destructor lookup redux - Not resolved + Unknown 400 @@ -2466,11 +2466,11 @@ of class templates Unclear reference to construction with non-trivial constructor N/A - + 405 - open + DRWP Unqualified function name lookup - Not resolved + Unknown 406 @@ -2502,11 +2502,11 @@ of class templates Paragraph missed in changes for issue 166 No - + 411 - open + WP Use of universal-character-name in character versus string literals - Not resolved + Unknown 412 @@ -2544,11 +2544,11 @@ of class templates Using derived-class qualified name in out-of-class nested class definition No - + 418 - open + DRWP Imperfect wording on error on multiple default arguments on a called function - Not resolved + Unknown 419 @@ -3252,11 +3252,11 @@ of class templates Copy construction without a copy constructor Yes - + 536 - drafting + DRWP Problems in the description of id-expressions - Not resolved + Unknown 537 @@ -3362,17 +3362,17 @@ and POD class 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 @@ -3398,11 +3398,11 @@ and POD class Editing error in issue 382 resolution Yes - + 560 - drafting + NAD Use of the typename keyword in return types - Not resolved + Unknown 561 @@ -3410,17 +3410,17 @@ and POD class Internal linkage functions in dependent name lookup Yes - + 562 - open + DRWP qualified-ids in non-expression contexts - Not resolved + Unknown - + 563 - open + DRWP Linkage specification for objects - Not resolved + Unknown 564 @@ -3526,7 +3526,7 @@ and POD class 581 - DRWP + CD5 Can a templated constructor be explicitly instantiated or specialized? Unknown @@ -3638,11 +3638,11 @@ and POD class Deleting a null function pointer Partial - + 600 - open + DRWP Does access control apply to members or to names? - Not resolved + Unknown 601 @@ -3680,11 +3680,11 @@ and POD class Template argument deduction for rvalue references Yes - + 607 - open + DRWP Lookup of mem-initializer-ids - Not resolved + Unknown 608 @@ -3740,11 +3740,11 @@ and POD class Definition of “indeterminate value” Clang 4 - + 617 - drafting + NAD Lvalue-to-rvalue conversions of uninitialized char objects - Not resolved + Unknown 618 @@ -4020,7 +4020,7 @@ and POD class 663 CD1 Valid Cyrillic identifier characters - Superseded by P1949 + Superseded by P1949 664 @@ -4058,11 +4058,11 @@ and POD class Confusing specification of the meaning of decltype Yes - + 670 - open + CD4 Copy initialization via derived-to-base conversion in the second step - Not resolved + Unknown 671 @@ -4132,7 +4132,7 @@ and POD class 682 - DRWP + CD5 Missing description of lookup of template aliases Unknown @@ -5036,11 +5036,11 @@ and POD class Restrictions on use of non-static data members Unknown - + 852 - open + DRWP using-declarations and dependent base classes - Not resolved + Unknown 853 @@ -5470,7 +5470,7 @@ and POD class 943 - DRWP + CD5 Is T() a temporary? Unknown @@ -5522,11 +5522,11 @@ and POD class Problems with attribute-specifiers Unknown - + 952 - drafting + DRWP Insufficient description of “naming class” - Not resolved + Unknown 953 @@ -5978,11 +5978,11 @@ and POD class Type consistency and reallocation of scalar types Not resolved - + 1028 - open + DRWP Dependent names in non-defining declarations - Not resolved + Unknown 1029 @@ -6268,7 +6268,7 @@ and POD class 1076 - DRWP + CD5 Value categories and lvalue temporaries Unknown @@ -7010,11 +7010,11 @@ and POD class Deleted constexpr functions Unknown - + 1200 - open + DRWP Lookup rules for template parameters - Not resolved + Unknown 1201 @@ -7190,11 +7190,11 @@ and POD class Overload resolution with empty braced-init-list argument Unknown - + 1230 - open + dup Confusing description of ambiguity of destructor name - Not resolved + Unknown 1231 @@ -7322,11 +7322,11 @@ and POD class C compatibility: casting to unqualified void* Unknown - + 1252 - drafting + DRWP Overloading member function templates based on dependent return type - Not resolved + Unknown 1253 @@ -7438,7 +7438,7 @@ and POD class 1271 - DRWP + CD5 Imprecise wording regarding dependent types Unknown @@ -7520,11 +7520,11 @@ and POD class Should the lifetime of an array be independent of that of its elements? Unknown - + 1285 - open + NAD Trivial destructors and object lifetime - Not resolved + Unknown 1286 @@ -7556,11 +7556,11 @@ and POD class Lifetime of the underlying array of an initializer_list member Unknown - + 1291 - drafting + DRWP Looking up a conversion-type-id - Not resolved + Unknown 1292 @@ -7606,7 +7606,7 @@ and POD class 1299 - DRWP + CD5 “Temporary objects” vs “temporary expressions” Unknown @@ -7796,17 +7796,17 @@ and POD class Delayed instantiation of noexcept specifiers Clang 4 (C++11 onwards) - + 1331 - extension + CD5 const mismatch with defaulted copy constructor - Extension + Unknown - + 1332 - drafting + CD5 Handling of invalid universal-character-names - Not resolved + Unknown 1333 @@ -8292,7 +8292,7 @@ and POD class 1413 CD3 Missing cases of value-dependency - Clang 12 + Clang 12 1414 @@ -8366,11 +8366,11 @@ and POD class Base-class subobjects of standard-layout structs N/A (ABI constraint) - + 1426 - extension + CD5 Allowing additional parameter types in defaulted functions - Extension + Unknown 1427 @@ -8516,17 +8516,17 @@ and POD class INT_MIN % -1 Unknown - + 1451 - extension + CD4 Objects with no linkage in non-type template arguments - Extension + Unknown - + 1452 - drafting + NAD Value-initialized objects may be constants - Not resolved + Unknown 1453 @@ -8618,11 +8618,11 @@ and POD class 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 @@ -8678,11 +8678,11 @@ and POD class Definition of a friend outside its namespace Unknown - + 1478 - drafting + DRWP template keyword for dependent template template arguments - Not resolved + Unknown 1479 @@ -8810,11 +8810,11 @@ and POD class Missing case for deleted move assignment operator Not resolved - + 1500 - open + DRWP Name lookup of dependent conversion function - Not resolved + Unknown 1501 @@ -8950,7 +8950,7 @@ and POD class 1523 - DRWP + CD5 Point of declaration in range-based for Unknown @@ -9080,11 +9080,11 @@ and POD class Linkage of member of unnamed namespace Unknown - + 1545 - drafting + NAD friend function templates defined in class templates - Not resolved + Unknown 1546 @@ -9162,7 +9162,7 @@ and POD class 1558 CD4 Unused arguments in alias template specializations - Clang 12 + Clang 12 1559 @@ -9298,7 +9298,7 @@ and POD class 1581 - DRWP + CD5 When are constexpr member functions defined? Unknown @@ -9506,11 +9506,11 @@ and POD class Alignment of types, variables, and members Unknown - + 1616 - drafting + DRWP Disambiguation parsing and template parameters - Not resolved + Unknown 1617 @@ -9538,7 +9538,7 @@ and POD class 1621 - DRWP + C++20 Member initializers in anonymous unions Unknown @@ -9604,7 +9604,7 @@ and POD class 1632 - DRWP + CD5 Lambda capture in member initializers Unknown @@ -9628,7 +9628,7 @@ and POD class 1636 - DRWP + CD5 Bits required for negative enumerator values Unknown @@ -9650,11 +9650,11 @@ and POD class exception-specifications and pointer/pointer-to-member expressions Unknown - + 1640 - drafting + CD5 Array of abstract instance of class template - Not resolved + Unknown 1641 @@ -9674,11 +9674,11 @@ and POD class Default arguments for template parameter packs Extension - + 1644 - open + NAD Equivalent exception-specifications in function template declarations - Not resolved + Unknown 1645 @@ -9686,11 +9686,11 @@ and POD class Identical inheriting constructors via default arguments Clang 3.9 - + 1646 - drafting + CD5 decltype-specifiers, abstract classes, and deduction failure - Not resolved + Unknown 1647 @@ -9746,11 +9746,11 @@ and POD class Line endings in raw string literals Not resolved - + 1656 - drafting + WP Encoding of numerically-escaped characters - Not resolved + Unknown 1657 @@ -10006,7 +10006,7 @@ and POD class 1699 - drafting + open Does befriending a class befriend its friends? Not resolved @@ -10036,7 +10036,7 @@ and POD class 1704 - DRWP + CD5 Type checking in explicit instantiation of variable templates Unknown @@ -10076,11 +10076,11 @@ and POD class Missing template keyword in class-or-decltype Unknown - + 1711 - drafting + WP Missing specification of variable template partial specializations - Not resolved + Unknown 1712 @@ -10088,11 +10088,11 @@ and POD class constexpr variable template declarations Unknown - + 1713 - drafting + dup Linkage of variable template specializations - Not resolved + Unknown 1714 @@ -10180,15 +10180,15 @@ and POD class 1728 - DRWP + CD5 Type of an explicit instantiation of a variable template Unknown - + 1729 - drafting + DRWP Matching declarations and definitions of variable templates - Not resolved + Unknown 1730 @@ -10386,7 +10386,7 @@ and POD class 1762 C++14 Reserved identifier used in literal-operator-id example - Unknown + Clang 14 1763 @@ -10436,17 +10436,17 @@ and POD class 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 @@ -10488,7 +10488,7 @@ and POD class 1779 CD4 Type dependency of __func__ - Unknown + Clang 14 1780 @@ -10498,7 +10498,7 @@ and POD class 1781 - DRWP + CD5 Converting from nullptr_t to bool in overload resolution Unknown @@ -10546,7 +10546,7 @@ and POD class 1789 - drafting + review Array reference vs array decay in overload resolution Not resolved @@ -10616,11 +10616,11 @@ and POD class Pointer to member of nested anonymous union Unknown - + 1801 - drafting + CD4 Kind of expression referring to member of anonymous union - Not resolved + Unknown 1802 @@ -10628,11 +10628,11 @@ and POD class char16_t string literals and surrogate pairs Unknown - + 1803 - drafting + CD5 opaque-enum-declaration as member-declaration - Not resolved + Unknown 1804 @@ -10718,11 +10718,11 @@ and POD class Linkage specifications and nested scopes Not resolved - + 1818 - open + DRWP Visibility and inherited language linkage - Not resolved + Unknown 1819 @@ -10730,23 +10730,23 @@ and POD class Acceptable scopes for definition of partial specialization Unknown - + 1820 - open + DRWP Qualified typedef names - Not resolved + Unknown - + 1821 - open + DRWP Qualified redeclarations in a class member-specification - Not resolved + Unknown - + 1822 - open + DRWP Lookup of parameter names in lambda-expressions - Not resolved + Unknown 1823 @@ -10778,17 +10778,17 @@ and POD class Reference binding with ambiguous conversions Not resolved - + 1828 - drafting + DRWP nested-name-specifier ambiguity - Not resolved + Unknown - + 1829 - open + DRWP Dependent unnamed types - Not resolved + Unknown 1830 @@ -10820,23 +10820,23 @@ and POD class 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,11 +10844,11 @@ and POD class Definition via unqualified-id and using-declaration Unknown - + 1839 - review + DRWP Lookup of block-scope extern declarations - Not resolved + Unknown 1840 @@ -10856,11 +10856,11 @@ and POD class Non-deleted explicit specialization of deleted function template Not resolved - + 1841 - drafting + DRWP < following template injected-class-name - Not resolved + Unknown 1842 @@ -10952,11 +10952,11 @@ and POD class Indirect nested classes of class templates Not resolved - + 1857 - drafting + CD5 Additional questions about bits - Not resolved + Unknown 1858 @@ -10966,7 +10966,7 @@ and POD class 1859 - NAD + CD5 UTF-16 in char16_t string literals Unknown @@ -10984,7 +10984,7 @@ and POD class 1862 - DRWP + CD5 Determining “corresponding members” for friendship Unknown @@ -11090,11 +11090,11 @@ and POD class Inadequate definition of alignment requirement Unknown - + 1880 - drafting + CD4 When are parameter objects destroyed? - Not resolved + Unknown 1881 @@ -11114,11 +11114,11 @@ and POD class Protected access to constructors in mem-initializers Not resolved - + 1884 - drafting + DRWP Unclear requirements for same-named external-linkage entities - Not resolved + Unknown 1885 @@ -11170,15 +11170,15 @@ and POD class 1893 - DRWP + CD5 Function-style cast with braced-init-lists and empty pack expansions Unknown - + 1894 - open + DRWP typedef-names and using-declarations - Not resolved + Unknown 1895 @@ -11186,11 +11186,11 @@ and POD class Deleted conversions in conditional operator operands Unknown - + 1896 - drafting + DRWP Repeated alias templates - Not resolved + Unknown 1897 @@ -11198,11 +11198,11 @@ and POD class ODR vs alternative tokens Not resolved - + 1898 - drafting + DRWP Use of “equivalent” in overload resolution - Not resolved + Unknown 1899 @@ -11210,11 +11210,11 @@ and POD class Value-dependent constant expressions Unknown - + 1900 - drafting + DRWP Do friend declarations count as “previous declarations”? - Not resolved + Unknown 1901 @@ -11252,17 +11252,17 @@ and POD class Name lookup in member friend declaration Unknown - + 1907 - drafting + DRWP using-declarations and default arguments - Not resolved + Unknown - + 1908 - drafting + DRWP Dual destructor lookup and template-ids - Not resolved + Unknown 1909 @@ -11272,7 +11272,7 @@ and POD class 1910 - DRWP + CD5 “Shall” requirement applied to runtime behavior Unknown @@ -11290,7 +11290,7 @@ and POD class 1913 - DRWP + CD5 decltype((x)) in lambda-expressions Unknown @@ -11312,11 +11312,11 @@ and POD class “Same cv-unqualified type” Unknown - + 1917 - drafting + NAD decltype-qualified enumeration names - Not resolved + Unknown 1918 @@ -11426,21 +11426,21 @@ and POD class Reuse of placement arguments in deallocation Not resolved - + 1936 - drafting + DRWP Dependent qualified-ids - Not resolved + Unknown 1937 - DRWP + CD5 Incomplete specification of function pointer from lambda Unknown 1938 - DRWP + CD5 Should hosted/freestanding be implementation-defined? Unknown @@ -11468,11 +11468,11 @@ and POD class Incorrect reference to trailing-return-type Unknown - + 1943 - open + CD5 Unspecified meaning of “bit” - Not resolved + Unknown 1944 @@ -11654,11 +11654,11 @@ and POD class Which parameter-declaration-clause in a lambda-expression? Not resolved - + 1974 - open + NAD Redundant specification of non-type typename-specifier - Not resolved + Unknown 1975 @@ -11710,7 +11710,7 @@ and POD class 1983 - DRWP + CD5 Inappropriate use of virt-specifier Unknown @@ -11852,11 +11852,11 @@ and POD class Cv-qualified void types Unknown - + 2007 - drafting + DRWP Argument-dependent lookup for operator= - Not resolved + Unknown 2008 @@ -11864,11 +11864,11 @@ and POD class Default template-arguments underspecified Unknown - + 2009 - open + DRWP Unclear specification of class scope - Not resolved + Unknown 2010 @@ -11932,7 +11932,7 @@ and POD class 2020 - DRWP + CD5 Inadequate description of odr-use of implicitly-invoked functions Unknown @@ -12080,11 +12080,11 @@ and POD class decltype(auto) and void Unknown - + 2045 - drafting + CD5 “Identical” template parameter lists - Not resolved + Unknown 2046 @@ -12118,7 +12118,7 @@ and POD class 2051 - DRWP + CD5 Simplifying alias rules Unknown @@ -12130,7 +12130,7 @@ and POD class 2053 - DR + C++20 auto in non-generic lambdas Unknown @@ -12158,15 +12158,15 @@ and POD class Template template arguments with default arguments Not resolved - + 2058 - drafting + DRWP More errors from internal-linkage namespaces - Not resolved + Unknown 2059 - DRWP + CD5 Linkage and deduced return types Unknown @@ -12182,11 +12182,11 @@ and POD class Inline namespace after simplifications Unknown - + 2062 - drafting + DRWP Class template redeclaration requirements - Not resolved + Unknown 2063 @@ -12200,11 +12200,11 @@ and POD class Conflicting specifications for dependent decltype-specifiers Unknown - + 2065 - drafting + DRWP Current instantiation of a partial specialization - Not resolved + Unknown 2066 @@ -12230,11 +12230,11 @@ and POD class Do destructors have names? Unknown - + 2070 - drafting + DRWP using-declaration with dependent nested-name-specifier - Not resolved + Unknown 2071 @@ -12270,7 +12270,7 @@ and POD class 2076 CD4 List-initialization of arguments for constructor parameters - Unknown + Clang 13 2077 @@ -12290,15 +12290,15 @@ and POD class [[ appearing in a balanced-token-seq Unknown - + 2080 - drafting + CD5 Example with empty anonymous union member - Not resolved + Unknown 2081 - DRWP + CD5 Deduced return type in redeclaration or specialization of function template Unknown @@ -12310,7 +12310,7 @@ and POD class 2083 - DRWP + CD5 Incorrect cases of odr-use Partial @@ -12340,7 +12340,7 @@ and POD class 2088 - DRWP + CD5 Late tiebreakers in partial ordering Unknown @@ -12364,7 +12364,7 @@ and POD class 2092 - DRWP + CD5 Deduction failure and overload resolution Unknown @@ -12414,7 +12414,7 @@ and POD class 2100 C++17 Value-dependent address of static data member of class template - Clang 12 + Clang 12 2101 @@ -12430,7 +12430,7 @@ and POD class 2103 - DRWP + CD5 Lvalue-to-rvalue conversion is irrelevant in odr-use of a reference Yes @@ -12482,11 +12482,11 @@ and POD class Array temporaries in reference binding Extension - + 2112 - drafting + CD5 new auto{x} - Not resolved + Unknown 2113 @@ -12536,11 +12536,11 @@ and POD class 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 +12568,9 @@ and POD class 2126 - DRWP + C++20 Lifetime-extended temporaries in constant expressions - Clang 12 + Clang 12 2127 @@ -12610,7 +12610,7 @@ and POD class 2133 - DRWP + CD5 Converting std::nullptr_t to bool Unknown @@ -12796,15 +12796,15 @@ and POD class 2164 - DRWP + CD5 Name hiding and using-directives Unknown - + 2165 - drafting + DRWP Namespaces, declarative regions, and translation units - Not resolved + Unknown 2166 @@ -12832,7 +12832,7 @@ and POD class 2170 - DRWP + CD5 Unclear definition of odr-use for arrays Clang 9 @@ -12874,7 +12874,7 @@ and POD class 2177 - DRWP + CD5 Placement operator delete and parameter copies Unknown @@ -13004,11 +13004,11 @@ and POD class Linkage of enumerators Unknown - + 2199 - drafting + DRWP Typedefs and tags - Not resolved + Unknown 2200 @@ -13054,7 +13054,7 @@ and POD class 2207 - DRWP + CD5 Alignment of allocation function return value Unknown @@ -13088,11 +13088,11 @@ and POD class Typedef changing linkage after use Not resolved - + 2213 - drafting + DRWP Forward declaration of partial specializations - Not resolved + Unknown 2214 @@ -13100,11 +13100,11 @@ and POD class Missing requirement on representation of integer values Unknown - + 2215 - review + C++17 Redundant description of language linkage in function call - Not resolved + Unknown 2216 @@ -13168,13 +13168,13 @@ and POD class 2226 - DRWP + CD5 Xvalues vs lvalues in conditional expressions Unknown 2227 - DRWP + CD5 Destructor access and default member initializers Unknown @@ -13186,7 +13186,7 @@ and POD class 2229 - DRWP + CD5 Volatile unnamed bit-fields Clang 7 @@ -13210,19 +13210,19 @@ and POD class 2233 - DRWP + CD5 Function parameter packs following default arguments Clang 11 2234 - DRWP + CD5 Missing rules for simple-template-id as class-name Unknown 2235 - DRWP + CD5 Partial ordering and non-dependent types Unknown @@ -13234,7 +13234,7 @@ and POD class 2237 - WP + CD5 Can a template-id name a constructor? Unknown @@ -13258,7 +13258,7 @@ and POD class 2241 - DRWP + CD5 Overload resolution is not invoked with a single function Unknown @@ -13306,7 +13306,7 @@ and POD class 2249 - DRWP + CD5 identifiers and id-expressions Unknown @@ -13330,31 +13330,31 @@ and POD class 2253 - DRWP + CD5 Unnamed bit-fields and zero-initialization Unknown 2254 - DRWP + CD5 Standard-layout classes and bit-fields Unknown 2255 - DRWP + CD5 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 @@ -13372,7 +13372,7 @@ and POD class 2260 - DRWP + CD5 Explicit specializations of deleted member functions Unknown @@ -13408,13 +13408,13 @@ and POD class 2266 - DRWP + CD5 Has dependent type vs is type-dependent Unknown 2267 - DRWP + CD5 Copy-initialization of temporary in reference direct-initialization Unknown @@ -13450,7 +13450,7 @@ and POD class 2273 - DRWP + CD5 Inheriting constructors vs implicit default constructor Unknown @@ -13474,13 +13474,13 @@ and POD class 2277 - DRWP + CD5 Ambiguity inheriting constructors with default arguments Unknown 2278 - DRWP + CD5 Copy elision in constant expressions reconsidered Unknown @@ -13492,7 +13492,7 @@ and POD class 2280 - DRWP + C++20 Matching a usual deallocation function with placement new Unknown @@ -13504,7 +13504,7 @@ and POD class 2282 - DRWP + C++20 Consistency with mismatched aligned/non-over-aligned allocation/deallocation functions Unknown @@ -13522,7 +13522,7 @@ and POD class 2285 - DRWP + CD5 Issues with structured bindings Unknown @@ -13534,7 +13534,7 @@ and POD class 2287 - DRWP + CD5 Pointer-interconvertibility in non-standard-layout unions Unknown @@ -13546,13 +13546,13 @@ and POD class 2289 - DRWP + CD5 Uniqueness of structured binding names Unknown 2290 - DRWP + CD5 Unclear specification for overload resolution and deleted special member functions Unknown @@ -13564,27 +13564,27 @@ and POD class 2292 - DRWP + CD5 simple-template-id is ambiguous between class-name and type-name Clang 9 2293 - DRWP + CD5 Requirements for simple-template-id used as a class-name Unknown 2294 - DRWP + CD5 Dependent auto static data members Unknown - + 2295 - extension + CD5 Aggregates with deleted defaulted constructors - Extension + Unknown 2296 @@ -13606,13 +13606,13 @@ and POD class 2299 - DRWP + CD5 constexpr vararg functions Unknown 2300 - DRWP + CD5 Lambdas in multiple definitions Unknown @@ -13630,9 +13630,9 @@ and POD class 2303 - DRWP + CD5 Partial ordering and recursive variadic inheritance - Clang 12 + Clang 12 2304 @@ -13642,7 +13642,7 @@ and POD class 2305 - DRWP + CD5 Explicit instantiation of constexpr or inline variable template Unknown @@ -13654,7 +13654,7 @@ and POD class 2307 - DRWP + CD5 Unclear definition of “equivalent to a nontype template parameter” Unknown @@ -13666,13 +13666,13 @@ and POD class 2309 - DRWP + CD5 Restrictions on nested statements within constexpr functions Unknown 2310 - DRWP + CD5 Type completeness and derived-to-base pointer conversions Unknown @@ -13682,15 +13682,15 @@ and POD class Missed case for guaranteed copy elision Not resolved - + 2312 - drafting + DRWP Structured bindings and mutable - Not resolved + Unknown 2313 - DRWP + CD5 Redeclaration of structured binding reference variables Unknown @@ -13702,7 +13702,7 @@ and POD class 2315 - DRWP + CD5 What is the “corresponding special member” of a variant member? Unknown @@ -13714,13 +13714,13 @@ and POD class 2317 - DRWP + CD5 Self-referential default member initializers Unknown 2318 - DRWP + CD5 Nondeduced contexts in deduction from a braced-init-list Unknown @@ -13738,19 +13738,19 @@ and POD class 2321 - DRWP + CD5 Conditional operator and cv-qualified class prvalues Unknown 2322 - DRWP + CD5 Substitution failure and lexical order Unknown 2323 - WP + C++20 Expunge POD Unknown @@ -13792,27 +13792,27 @@ and POD class 2330 - DRWP + CD5 Missing references to variable templates Unknown - + 2331 - drafting + DRWP Redundancy in description of class scope - Not resolved + Unknown 2332 - DRWP + CD5 template-name as simple-type-name vs injected-class-name Unknown - + 2333 - drafting + WP Escape sequences in UTF-8 character literals - Not resolved + Unknown 2334 @@ -13828,7 +13828,7 @@ and POD class 2336 - DRWP + CD5 Destructor characteristics vs potentially-constructed subobjects Unknown @@ -13840,13 +13840,13 @@ and POD class 2338 - DRWP + CD5 Undefined behavior converting to short enums with fixed underlying types - Clang 12 + Clang 12 2339 - DRWP + CD5 Underspecified template arguments in structured bindings Unknown @@ -13864,15 +13864,15 @@ and POD class 2342 - DRWP + CD5 Reference reinterpret_cast and pointer-interconvertibility Unknown - + 2343 - extension + C++20 void* non-type template parameters - Extension + Unknown 2344 @@ -13888,13 +13888,13 @@ and POD class 2346 - DRWP + CD5 Local variables in default arguments Clang 11 2347 - DRWP + C++20 Passing short scoped enumerations to ellipsis Unknown @@ -13918,25 +13918,25 @@ and POD class 2351 - DRWP + CD5 void{} Unknown 2352 - DRWP + CD5 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 @@ -13948,7 +13948,7 @@ and POD class 2356 - DRWP + CD5 Base class copy and move constructors should not be inherited Unknown @@ -13960,19 +13960,19 @@ and POD class 2358 - DRWP + CD5 Explicit capture of value Unknown 2359 - WP + CD5 Unintended copy initialization with designated initializers Unknown 2360 - DRWP + CD5 [[maybe_unused]] and structured bindings Unknown @@ -13994,69 +13994,69 @@ and POD class Opaque enumeration friend declarations 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 + DRWP Ordering between constraints and substitution - Not resolved + Unknown - + 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 + CD5 Incorrect handling of static member function templates in partial ordering Unknown 2374 - DRWP + C++20 Overly permissive specification of enum direct-list-initialization Unknown @@ -14068,7 +14068,7 @@ and POD class 2376 - DRWP + CD5 Class template argument deduction with array declarator Unknown @@ -14080,31 +14080,31 @@ and POD class 2378 - accepted + C++20 Inconsistent grammar for reference init-capture of pack Unknown 2379 - DRWP + CD5 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 @@ -14116,25 +14116,25 @@ and POD class 2384 - DRWP + CD5 Conversion function templates and qualification conversions Unknown 2385 - DRWP + CD5 Lookup for conversion-function-ids Unknown 2386 - DRWP + CD5 tuple_size requirements for structured binding Clang 9 2387 - DRWP + CD5 Linkage of const-qualified variable template Clang 9 @@ -14152,13 +14152,13 @@ and POD class 2390 - DRWP + CD5 Is the argument of __has_cpp_attribute macro-expanded? Unknown 2391 - DUP + dup Additional template parameters following pack expansion Unknown @@ -14176,7 +14176,7 @@ and POD class 2394 - DRWP + CD5 Const-default-constructible for members Unknown @@ -14186,17 +14186,17 @@ and POD class Parameters following a pack expansion Not resolved - + 2396 - open + DRWP Lookup of names in complex conversion-type-ids - Not resolved + Unknown - + 2397 - drafting + DR auto specifier for pointers and references to arrays - Not resolved + Unknown 2398 @@ -14206,13 +14206,13 @@ and POD class 2399 - DRWP + CD5 Unclear referent of “expression” in assignment-expression Unknown 2400 - DRWP + CD5 Constexpr virtual functions and temporary objects Unknown @@ -14222,11 +14222,11 @@ and POD class 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 + Unknown 2403 @@ -14236,7 +14236,7 @@ and POD class 2404 - DRWP + CD5 [[no_unique_address]] and allocation order Unknown @@ -14248,7 +14248,7 @@ and POD class 2406 - DRWP + CD5 [[fallthrough]] attribute and iteration statements Unknown @@ -14276,11 +14276,11 @@ and POD class Implicit calls of immediate functions Not resolved - + 2411 - open + C++20 Comparison of pointers to members in template non-type arguments - Not resolved + Unknown 2412 @@ -14288,17 +14288,17 @@ and POD class SFINAE vs undeduced placeholder type Not resolved - + 2413 - drafting + DRWP typename in conversion-function-ids - Not resolved + Unknown - + 2414 - drafting + C++20 Unclear results if both member and friend operator<=> are declared - Not resolved + Unknown 2415 @@ -14308,7 +14308,7 @@ and POD class 2416 - DRWP + C++20 Explicit specializations vs constexpr and consteval Unknown @@ -14320,13 +14320,13 @@ and POD class 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 @@ -14338,13 +14338,13 @@ and POD class 2421 - open + drafting Explicit instantiation of constrained member functions Not resolved 2422 - DRWP + C++20 Incorrect grammar for deduction-guide Unknown @@ -14356,7 +14356,7 @@ and POD class 2424 - DRWP + C++20 constexpr initialization requirements for variant members Unknown @@ -14368,13 +14368,13 @@ and POD class 2426 - DRWP + C++20 Reference to destructor that cannot be invoked Unknown 2427 - DRWP + C++20 Deprecation of volatile operands and unevaluated contexts Unknown @@ -14386,31 +14386,31 @@ and POD class 2429 - DRWP + C++20 Initialization of thread_local variables referenced by lambdas Unknown 2430 - DRWP + C++20 Completeness of return and parameter types of member functions Unknown 2431 - DRWP + C++20 Full-expressions and temporaries bound to references Unknown 2432 - DRWP + C++20 Return types for defaulted <=> Unknown 2433 - DRWP + C++20 Variable templates in the ODR Unknown @@ -14428,13 +14428,13 @@ and POD class 2436 - accepted + C++20 Copy semantics of coroutine parameters Unknown 2437 - DRWP + C++20 Conversion of std::strong_ordering in a defaulted operator<=> Unknown @@ -14446,7 +14446,7 @@ and POD class 2439 - DRWP + C++20 Undefined term in definition of “usable in constant expressions” Unknown @@ -14458,64 +14458,370 @@ and POD class 2441 - DRWP + C++20 Inline function parameters Unknown 2442 - DRWP + C++20 Incorrect requirement for default arguments Unknown 2443 - open + drafting Meaningless template exports Not resolved 2444 - open + drafting Constant expressions in initialization odr-use Not resolved 2445 - + C++20 Partial ordering with rewritten candidates Unknown 2446 - accepted + C++20 Questionable type-dependency of concept-ids Unknown 2447 - accepted + C++20 Unintended description of abbreviated function templates Unknown - + 2448 - open + DR Cv-qualification of arithmetic types and deprecation of volatile - Not resolved + Unknown 2449 - open + extension Thunks as an implementation technique for pointers to virtual functions - Not resolved + Extension 2450 - open + drafting braced-init-list as a template-argument Not resolved + + 2451 + review + promise.unhandled_exception() and final suspend point + Not resolved + + + 2452 + DRWP + Flowing off the end of a coroutine + Unknown + + + 2453 + NAD + Deduced return types and coroutine lambdas + Unknown + + + 2454 + NAD + Tail recursion and coroutine symmetric transfer + Unknown + + + 2455 + drafting + Concatenation of string literals vs translation phases 5 and 6 + Not resolved + + + 2456 + open + Viable user-defined conversions in converted constant expressions + Not resolved + + + 2457 + DRWP + Unexpanded parameter packs don't make a function type dependent + Unknown + + + 2458 + DR + Value category of expressions denoting non-static member functions + Unknown + + + 2459 + drafting + Template parameter initialization + Not resolved + + + 2460 + DRWP + C language linkage and constrained non-template friends + Unknown + + + 2461 + DRWP + Diagnosing non-bool type constraints + Unknown + + + 2462 + drafting + Problems with the omission of the typename keyword + Not resolved + + + 2463 + open + Trivial copyability and unions with non-trivial members + Not resolved + + + 2464 + open + Constexpr launder and unions + Not resolved + + + 2465 + DR + Coroutine parameters passed to a promise constructor + Unknown + + + 2466 + DR + co_await should be a single evaluation + Unknown + + + 2467 + open + CTAD for alias templates and the deducible check + Not resolved + + + 2468 + drafting + Omission of the typename keyword in a member template parameter list + Not resolved + + + 2469 + drafting + Implicit object creation vs constant expressions + Not resolved + + + 2470 + DRWP + Multiple array objects providing storage for one object + Unknown + + + 2471 + drafting + Nested class template argument deduction + Not resolved + + + 2472 + NAD + Value categories in await-expressions + Unknown + + + 2473 + drafting + Parentheses in pseudo-destructor calls + Not resolved + + + 2474 + DR + Cv-qualification and deletion + Unknown + + + 2475 + open + Object declarations of type cv void + Not resolved + + + 2476 + drafting + placeholder-type-specifiers and function declarators + Not resolved + + + 2477 + DR + Defaulted vs deleted copy constructors/assignment operators + Unknown + + + 2478 + open + Properties of explicit specializations of implicitly-instantiated class templates + Not resolved + + + 2479 + DR + Missing specifications for consteval and constinit + Unknown + + + 2480 + drafting + Lookup for enumerators in modules + Not resolved + + + 2481 + DR + Cv-qualification of temporary to which a reference is bound + Unknown + + + 2482 + review + bit_cast and indeterminate values + Not resolved + + + 2483 + open + Language linkage of static member functions + Not resolved + + + 2484 + open + 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 + + + 2487 + drafting + Type dependence of function-style cast to incomplete array type + 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 + + + 2491 + ready + Export of typedef after its first declaration + Unknown + + + 2492 + NAD + Comparing user-defined conversion sequences in list-initialization + Unknown + + + 2493 + open + auto as a conversion-type-id + Not resolved + + + 2494 + drafting + Multiple definitions of non-odr-used entities + Not resolved + + + 2495 + review + Glvalue result of a function call + Not resolved + + + 2496 + ready + ref-qualifiers and virtual overriding + Unknown + + + 2497 + open + Points of instantiation for constexpr function templates + Not resolved + + + 2498 + open + Partial specialization failure and the immediate context + Not resolved + + + 2499 + open + Inconsistency in definition of pointer-interconvertibility + Not resolved + + + 2500 + extension + noexcept(false) functions and noexcept expressions + Extension + + + 2501 + open + Explicit instantiation and trailing requires-clauses + Not resolved + diff --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status index ed72718..d35165f9 100755 --- a/clang/www/make_cxx_dr_status +++ b/clang/www/make_cxx_dr_status @@ -92,7 +92,7 @@ print >> out_file, '''\ Available in Clang? ''' -latest_release = 11 +latest_release = 13 def availability(issue): status = status_map.get(issue, 'unknown') -- 2.7.4