diff options
author | Patrick Palka <ppalka@redhat.com> | 2023-10-27 11:26:40 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2023-10-27 11:26:40 -0400 |
commit | 68e97c5442ebb1c47bde77e82ac8a0e823347eb1 (patch) | |
tree | 3c0b1469e197e461795473d4565fa4feedb0b6b7 | |
parent | 0f2e2080685e75097c319e83eae4776fa98edd01 (diff) | |
download | gcc-68e97c5442ebb1c47bde77e82ac8a0e823347eb1.zip gcc-68e97c5442ebb1c47bde77e82ac8a0e823347eb1.tar.gz gcc-68e97c5442ebb1c47bde77e82ac8a0e823347eb1.tar.bz2 |
c++: add testcase verifying non-dep new-expr checking
gcc/testsuite/ChangeLog:
* g++.dg/template/new14.C: New test.
-rw-r--r-- | gcc/testsuite/g++.dg/template/new14.C | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/new14.C b/gcc/testsuite/g++.dg/template/new14.C new file mode 100644 index 0000000..8c0efe4 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/new14.C @@ -0,0 +1,20 @@ +// Verify we check new-expressions ahead of time. + +struct A { }; +struct B { B(int); }; +struct C { void* operator new(__SIZE_TYPE__, int); }; + +template<class T> +void f() { + new A(1); // { dg-error "no match" "" { xfail *-*-* } } + new B(1, 2); // { dg-error "no match" } + new B; // { dg-error "no match" } + new C; // { dg-error "no match" } +} + + +template<class T> +void g() { + new int[__SIZE_MAX__]; // { dg-error "exceeds maximum" } + new int[__SIZE_MAX__ / sizeof(int)]; // { dg-error "exceeds maximum" } +} |