diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/auto49.C | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/auto50.C | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C | 15 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/dc9.C | 30 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist98.C | 17 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C | 9 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/noexcept32.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C | 18 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr77655.C | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/variadic172.C | 20 |
13 files changed, 182 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/auto49.C b/gcc/testsuite/g++.dg/cpp0x/auto49.C new file mode 100644 index 00000000000..25b09dfdec1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto49.C @@ -0,0 +1,12 @@ +// PR c++/84350 +// { dg-do compile { target c++11 } } + +template<typename... T> void foo(T... t) +{ + new auto(t...); // { dg-error "invalid use" } +} + +void bar() +{ + foo(); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/auto50.C b/gcc/testsuite/g++.dg/cpp0x/auto50.C new file mode 100644 index 00000000000..814892d2afa --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto50.C @@ -0,0 +1,7 @@ +// PR c++/84348 +// { dg-do compile { target c++11 } } + +template<typename> struct A +{ + friend auto foo; // { dg-error "cannot be declared friend" } +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C new file mode 100644 index 00000000000..f187c425272 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C @@ -0,0 +1,14 @@ +// PR c++/84449 +// { dg-do compile { target c++11 } } + +struct A +{ + constexpr A (int) {} + ~A () = delete; +}; + +struct B +{ + A a; + constexpr B () : a (0) {} // { dg-error "use of deleted function" } +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C new file mode 100644 index 00000000000..4bf57b9e897 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C @@ -0,0 +1,15 @@ +// PR c++/83835 +// { dg-do compile { target c++11 } } + +struct Z +{ + void const * p_; + constexpr Z( void const * p ): p_( p ) {} + ~Z(); +}; + +struct Y +{ + Z z_; + constexpr Y() noexcept: z_( this ) {} +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/dc9.C b/gcc/testsuite/g++.dg/cpp0x/dc9.C new file mode 100644 index 00000000000..b87f5ce618d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/dc9.C @@ -0,0 +1,30 @@ +// PR c++/70468 +// { dg-do compile { target c++11 } } +// { dg-additional-options -w } + +struct S {}; + +template < typename = S > +class A +{ +public: + A () : f0 (), f1 () {} // { dg-error "" } + +private: + typedef A<> f0; + int f1; +}; + +template < typename = S, typename = S > +class B +{ +}; + +template < typename T1, typename T2 > +B < T1, T2 > &operator<< (B < T1, T2 >&, const int) +{ + A<> (); +} + +template +B < S, S > &operator<< (B < S, S >&, const int); diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist98.C b/gcc/testsuite/g++.dg/cpp0x/initlist98.C new file mode 100644 index 00000000000..4f2fcd20219 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist98.C @@ -0,0 +1,17 @@ +// PR c++/83227 +// { dg-do compile { target c++11 } } + +#include <initializer_list> + +template <typename d> struct f { + f(std::initializer_list<d>) {} +}; + +struct h {}; +struct i : h { + i(); +}; +void foo(f<h>); +int main() { + foo({i{}}); +} diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C new file mode 100644 index 00000000000..7544b270256 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice26.C @@ -0,0 +1,5 @@ +// PR c++/84455 +// { dg-do compile { target c++11 } } +// { dg-options "--param ggc-min-heapsize=0" } + +#include "lambda-ice14.C" diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C new file mode 100644 index 00000000000..04c44a3b57f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice27.C @@ -0,0 +1,8 @@ +// PR c++/84446 +// { dg-do compile { target c++11 } } + +template<int> void foo() +{ + int i, + i = [] { virtual }(); // { dg-error "redeclaration|expected" } +} diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C new file mode 100644 index 00000000000..91498c4589a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-vla1.C @@ -0,0 +1,9 @@ +// PR c++/84429 +// { dg-do compile { target c++11 } } +// { dg-options "" } + +void foo(int i) +{ + char x[i]; + [&]{ [&]{ return x; }; }; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept32.C b/gcc/testsuite/g++.dg/cpp0x/noexcept32.C new file mode 100644 index 00000000000..9a435049599 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/noexcept32.C @@ -0,0 +1,14 @@ +// PR c++/84045 +// { dg-do compile { target c++11 } } + +template <typename T> struct K { + static const bool d = true; +}; +template <typename T, typename> struct B { + typedef K<T> D; + void foo () noexcept (D::d); +}; +template <typename T> struct P { + P () noexcept (K<T>::d); +}; +P<int> p; diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C new file mode 100644 index 00000000000..66d94e53824 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-empty1.C @@ -0,0 +1,18 @@ +// PR c++/82764 +// { dg-do compile { target c++11 } } + +struct Empty {}; +struct Empty2 : Empty {}; + +struct A : Empty2 +{ + int x {1}; + int y {2}; +}; + +struct B +{ + A a {}; +}; + +B b; diff --git a/gcc/testsuite/g++.dg/cpp0x/pr77655.C b/gcc/testsuite/g++.dg/cpp0x/pr77655.C new file mode 100644 index 00000000000..ab2e942cbb8 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr77655.C @@ -0,0 +1,13 @@ +// PR c++/77655 +// { dg-do compile { target c++11 } } + +template <class F> void g(F); +template <class... A> +auto h(A &&... a) -> decltype(g(0, g<decltype(a)>(a)...)) { // { dg-error "no matching" } + h([] {}); // { dg-error "no matching" } +} + +int main() { + h(); + return 0; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic172.C b/gcc/testsuite/g++.dg/cpp0x/variadic172.C new file mode 100644 index 00000000000..d25d3029a9d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic172.C @@ -0,0 +1,20 @@ +// PR c++/84454 +// { dg-do compile { target c++11 } } + +template<class F, class... A> +void +g(F&&, A&&...) +{} + +template<class... A> +auto +h(A&&... a) -> decltype(g(0, g<decltype(a)>(a)...)) +{ + g(a...); // { dg-error "no match" } +} + +int +main() +{ + h(); +} |