From 6d507a6d96ea6379bc1df207abe26ad4cbe6563d Mon Sep 17 00:00:00 2001
From: Douglas Gregor
Date: Thu, 7 May 2009 17:50:16 +0000
Subject: [PATCH] Big update to the C++ status table to reflect "recent"
development. Still much more to write!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71167 91177308-0d34-0410-b5e6-96231b3b80d8
---
test/SemaCXX/dcl_ambig_res.cpp | 66 ++++++++
www/cxx_status.html | 296 ++++++++++++++++++++++++++-------
2 files changed, 303 insertions(+), 59 deletions(-)
create mode 100644 test/SemaCXX/dcl_ambig_res.cpp
diff --git a/test/SemaCXX/dcl_ambig_res.cpp b/test/SemaCXX/dcl_ambig_res.cpp
new file mode 100644
index 0000000000..57bf4095af
--- /dev/null
+++ b/test/SemaCXX/dcl_ambig_res.cpp
@@ -0,0 +1,66 @@
+// RUN: clang-cc -fsyntax-only -pedantic -verify %s
+
+// [dcl.ambig.res]p1:
+struct S {
+ S(int);
+ void bar();
+};
+
+int returns_an_int();
+
+void foo(double a)
+{
+ S w(int(a)); // expected-warning{{disambiguated}}
+ w(17);
+ S x(int()); // expected-warning{{disambiguated}}
+ x(&returns_an_int);
+ S y((int)a);
+ y.bar();
+ S z = int(a);
+ z.bar();
+}
+
+// [dcl.ambig.res]p3:
+char *p;
+void *operator new(__SIZE_TYPE__, int);
+void foo3() {
+ const int x = 63;
+ new (int(*p)) int; //new-placement expression
+ new (int(*[x])); //new type-id
+}
+
+// [dcl.ambig.res]p4:
+template // expected-note{{here}}
+struct S4 {
+ T *p;
+};
+S4 x; //type-id
+S4 y; // expected-error{{must be a type}}
+
+// [dcl.ambig.res]p5:
+void foo5()
+{
+ (void)sizeof(int(1)); //expression
+ // FIXME: should we make this an error rather than a warning?
+ // (It affects SFINAE)
+ (void)sizeof(int()); // expected-warning{{function type}}
+}
+
+// [dcl.ambig.res]p6:
+void foo6()
+{
+ (void)(int(1)); //expression
+ (void)(int())1; // expected-error{{used type}}
+}
+
+// [dcl.ambig.res]p7:
+class C7 { };
+void f7(int(C7)) { } // expected-note{{candidate}}
+int g7(C7);
+void foo7() {
+ f7(1); // expected-error{{no matching function}}
+ f7(g7); //OK
+}
+
+void h7(int *(C7[10])) { } // expected-note{{previous}}
+void h7(int *(*_fp)(C7 _parm[10])) { } // expected-error{{redefinition}}
diff --git a/www/cxx_status.html b/www/cxx_status.html
index 8f857e4d8d..b165b9b1da 100644
--- a/www/cxx_status.html
+++ b/www/cxx_status.html
@@ -1113,25 +1113,97 @@ welcome!
|
|
-8 [dcl.decl] | | | | | |
- 8.1 [dcl.name] | | | | | |
- 8.2 [dcl.ambig.res] | | | | | |
- 8.3 [dcl.meaning] | | | | | |
- 8.3.1 [dcl.ptr] | | | | | |
- 8.3.2 [dcl.ref] | | | | | |
- 8.3.3 [dcl.mptr] | | | | | |
- 8.3.4 [dcl.array] | | | | | |
- 8.3.5 [dcl.fct] | | | | | |
+ 8 [dcl.decl] | | | | | |
+
+
+ 8.1 [dcl.name] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
+ |
+
+
+ 8.2 [dcl.ambig.res] |
+ ✓ |
+ N/A |
+ ✓ |
+ N/A |
+ |
+
+
+ 8.3 [dcl.meaning] |
+ ✓ |
+ ✓ |
+ |
+ N/A |
+ Qualified declarator-ids are not fully implemented. |
+
+
+ 8.3.1 [dcl.ptr] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
+ |
+
+
+ 8.3.2 [dcl.ref] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
+ |
+
+
+ 8.3.3 [dcl.mptr] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
+ |
+
+
+ 8.3.4 [dcl.array] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
+ |
+
+
+ 8.3.5 [dcl.fct] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
+ |
+
+
8.3.6 [dcl.fct.default] |
|
|
|
- |
+ N/A |
Missing default arguments for templates. |
- 8.4 [dcl.fct.def] | | | | | |
- 8.5 [dcl.init] | | | | | |
+
+ 8.4 [dcl.fct.def] |
+ ✓ |
+ ✓ |
+ |
+ |
+ ctor-initializers are not fully type-checked. |
+
+
+ 8.5 [dcl.init] |
+ |
+ |
+ |
+ |
+ |
+
8.5.1[dcl.init.aggr] |
|
@@ -1167,9 +1239,9 @@ welcome!
9.1 [class.name] |
✓ |
- |
- |
- |
+ ✓ |
+ ✓ |
+ N/A |
|
@@ -1177,15 +1249,15 @@ welcome!
|
|
|
- |
- No parser support for using declarations, or templates. |
+ |
+ No parser support for using declarations or member templates. |
9.3 [class.mfct] |
✓ |
- |
- |
- |
+ |
+ |
+ |
|
@@ -1193,7 +1265,7 @@ welcome!
✓ |
|
|
- |
+ |
|
@@ -1201,7 +1273,7 @@ welcome!
✓ |
|
|
- |
+ |
|
@@ -1209,7 +1281,7 @@ welcome!
✓ |
✓ |
|
- |
+ |
|
@@ -1217,7 +1289,7 @@ welcome!
✓ |
✓ |
|
- |
+ |
|
@@ -1225,7 +1297,7 @@ welcome!
✓ |
✓ |
|
- |
+ |
|
@@ -1239,89 +1311,187 @@ welcome!
9.6 [class.bit] |
✓ |
- |
- |
- |
+ ✓ |
+ ✓ |
+ ✓ |
|
9.7 [class.nest] |
✓ |
- |
- |
- |
+ |
+ |
+ N/A |
|
9.8 [class.local] |
✓ |
- |
- |
- |
+ |
+ |
+ |
|
9.9 [class.nested.type] |
✓ |
+ ✓ |
+ ✓ |
+ N/A |
|
+
+
+ 10 [class.derived] |
+ |
+ |
+ |
+ |
|
- |
+
+
+ 10.1 [class.mi] |
+ |
+ |
+ |
+ |
+ No layout of base classes |
+
+
+ 10.2 [class.member.lookup] |
+ ✓ |
+ ✓ |
+ ✓ |
+ N/A |
|
-10 [class.derived] | | | | | |
- 10.1 [class.mi] | | | | | |
- 10.2 [class.member.lookup] | | | | | |
- 10.3 [class.virtual] | | | | | |
+
+ 10.3 [class.virtual] |
+ |
+ |
+ |
+ |
+ No semantic analysis for overriding virtual functions or inheriting a virtual function. No layout of classes with virtual functions. |
+
10.4 [class.abstract] |
✓ |
✓ |
✓ |
- N/A |
+ N/A |
|
-11 [class.access] | | | | | |
- 11.1 [class.access.spec] | | | | | |
- 11.2 [class.access.base] | | | | | |
- 11.3 [class.access.dcl] | | | | | |
- 11.4 [class.friend] | | | | | |
- 11.5 [class.protected] | | | | | |
- 11.6 [class.access.virt] | | | | | |
- 11.7 [class.paths] | | | | | |
- 11.8 [class.access.nest] | | | | | |
+
+ 11 [class.access] |
+ |
+ |
+ |
+ N/A |
+ |
+
+
+ 11.1 [class.access.spec] |
+ ✓ |
+ |
+ ✓ |
+ N/A |
+ |
+
+
+ 11.2 [class.access.base] |
+ ✓ |
+ ✓ |
+ |
+ N/A |
+ |
+
+
+ 11.3 [class.access.dcl] |
+ |
+ |
+ |
+ N/A |
+ |
+
+
+ 11.4 [class.friend] |
+ |
+ |
+ |
+ N/A |
+ |
+
+
+ 11.5 [class.protected] |
+ |
+ ✓ |
+ |
+ N/A |
+ |
+
+
+ 11.6 [class.access.virt] |
+ |
+ |
+ |
+ N/A |
+ |
+
+
+ 11.7 [class.paths] |
+ |
+ |
+ |
+ N/A |
+ |
+
+
+ 11.8 [class.access.nest] |
+ |
+ |
+ |
+ N/A |
+ |
+
12 [special] | | | | | |
12.1 [class.ctor] |
|
|
|
- |
- |
+ |
+ Implicitly-declared constructors are never defined. |
+
+
+ 12.2 [class.temporary] |
+ N/A |
+ |
+ |
+ |
+ Implementation of temporary objects is in its initial stages. |
- 12.2 [class.temporary] | | | | | |
12.3 [class.conv] |
|
+ |
|
- |
|
|
12.3.1 [class.conv.ctor] |
+ |
+ |
|
- |
- |
|
|
12.3.2 [class.conv.fct] |
+ |
+ |
|
- |
- |
|
- Conversion functions can be declared and defined, but aren't used for anything. |
+ No support for inheritance of conversion functions. |
12.4 [class.dtor] |
@@ -1343,7 +1513,15 @@ welcome!
No actual direct initialization; implicit initialization not checked. |
12.7 [class.cdtor] | | | | | |
- 12.8 [class.copy] | | | | | |
+
+ 12.8 [class.copy] |
+ |
+ |
+ |
+ |
+ Copy assignment operators are mostly ignored by semantic analysis. |
+
+
13 [over] | | | | | |
13.1 [over.load] |
--
2.40.0