diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp1z')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/class-deduction47.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/class-deduction48.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/launder7.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/launder8.C | 11 |
7 files changed, 59 insertions, 2 deletions
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction47.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction47.C new file mode 100644 index 00000000000..3e47f58e698 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction47.C @@ -0,0 +1,7 @@ +// PR c++/84376 + +template<int> struct A {}; + +template<typename T> T foo() { return T(); } + +template<> A foo<A>(); // { dg-error "A" } diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C new file mode 100644 index 00000000000..1cfdc44a993 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction48.C @@ -0,0 +1,5 @@ +// PR c++/82468 +// { dg-options -std=c++17 } + +template <template <class> class TT> +TT(double) -> TT<int>; // { dg-error "template template" } diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C new file mode 100644 index 00000000000..f6cc39a0c2f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-if14.C @@ -0,0 +1,14 @@ +// PR c++/84421 +// { dg-options -std=c++17 } + +struct A{ + constexpr operator bool() const { return true; } +}; + +int main(){ + auto f = [](auto v){ + if constexpr(v){} + }; + A a; + f(a); +} diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C b/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C new file mode 100644 index 00000000000..fbab0259643 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/decomp-lambda1.C @@ -0,0 +1,10 @@ +// PR c++/84420 +// { dg-additional-options -std=c++17 } + +int main(){ + int a[1]{}; + [&a]{ + auto [v] = a; + (void)v; + }(); +} diff --git a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C index b2f046b5c91..2ab1b4e3e86 100644 --- a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C +++ b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C @@ -358,8 +358,8 @@ #ifndef __cpp_deduction_guides # error "__cpp_deduction_guides" -#elif __cpp_deduction_guides != 201606 -# error "__cpp_deduction_guides != 201606" +#elif __cpp_deduction_guides != 201611 +# error "__cpp_deduction_guides != 201611" #endif #ifndef __cpp_if_constexpr diff --git a/gcc/testsuite/g++.dg/cpp1z/launder7.C b/gcc/testsuite/g++.dg/cpp1z/launder7.C new file mode 100644 index 00000000000..e418329f931 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/launder7.C @@ -0,0 +1,10 @@ +// PR c++/84445 +// { dg-do compile } + +struct A { virtual void foo (); }; + +void +bar (A *p) +{ + __builtin_launder (p)->foo (); +} diff --git a/gcc/testsuite/g++.dg/cpp1z/launder8.C b/gcc/testsuite/g++.dg/cpp1z/launder8.C new file mode 100644 index 00000000000..f57e91b60cd --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/launder8.C @@ -0,0 +1,11 @@ +// PR c++/84444 +// { dg-do compile } +// { dg-options "-O2" } + +struct A {}; + +__UINTPTR_TYPE__ +foo (A *p) +{ + return (__UINTPTR_TYPE__) __builtin_launder (p); +} |