aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp23
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp23')
-rw-r--r--gcc/testsuite/g++.dg/cpp23/explicit-obj-basic7.C9
-rw-r--r--gcc/testsuite/g++.dg/cpp23/explicit-obj-ops-alloc.C11
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp23/explicit-obj-basic7.C b/gcc/testsuite/g++.dg/cpp23/explicit-obj-basic7.C
new file mode 100644
index 00000000000..a474e97fc18
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp23/explicit-obj-basic7.C
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++23 } }
+
+// Shouldn't ICE
+struct S {
+ void a(this long);
+ void b(this const long);
+ void c(this long unsigned);
+ void c(this signed);
+};
diff --git a/gcc/testsuite/g++.dg/cpp23/explicit-obj-ops-alloc.C b/gcc/testsuite/g++.dg/cpp23/explicit-obj-ops-alloc.C
new file mode 100644
index 00000000000..8a277db7ef5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp23/explicit-obj-ops-alloc.C
@@ -0,0 +1,11 @@
+// PR c++/114078
+// { dg-do compile { target c++23 } }
+
+using size_t = decltype(sizeof(0));
+
+struct S {
+ void* operator new(this size_t); // { dg-error "explicit object" }
+ void* operator new[](this size_t); // { dg-error "explicit object" }
+ void operator delete(this void*); // { dg-error "explicit object" }
+ void operator delete[](this void*); // { dg-error "explicit object" }
+};