diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/move-return1.C | 22 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/nsdmi10.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/nullptr39.C | 15 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr65558.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/sfinae59.C | 19 |
7 files changed, 62 insertions, 6 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/move-return1.C b/gcc/testsuite/g++.dg/cpp0x/move-return1.C new file mode 100644 index 00000000000..dc2b313fee6 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/move-return1.C @@ -0,0 +1,22 @@ +// PR c++/80452 +// { dg-do compile { target c++11 } } + +template<typename> struct check { }; +template<typename T> struct check<T&>; + +struct A { + A() = default; + A(A&&) = default; + A(const A&) = delete; +}; + +template <class T> +struct B { + template <class U> B(U&&) { check<U> u; } +}; + +B<A> f() +{ + A a; + return a; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C index 0f06343958b..056d16dca4a 100644 --- a/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C +++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-defer6.C @@ -2,7 +2,7 @@ struct A { - int i = (A(), 42); // { dg-error "constructor required" } + int i = (A(), 42); // { dg-error "" } }; A a; diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C index 1a00ec0d6a9..a885a241279 100644 --- a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C +++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template14.C @@ -3,14 +3,14 @@ template<int> struct A { - int i = (A<0>(), 0); // { dg-error "recursive instantiation of non-static data" } + int i = (A<0>(), 0); // { dg-error "recursive instantiation of default" } }; A<0> a; template<int N> struct B { - B* p = new B<N>; // { dg-error "recursive instantiation of non-static data" } + B* p = new B<N>; // { dg-error "recursive instantiation of default" } }; B<1> x; diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C index 56f9ff08bdf..d8588b7f29e 100644 --- a/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C +++ b/gcc/testsuite/g++.dg/cpp0x/nsdmi10.C @@ -6,7 +6,7 @@ struct A1 { int y1 = 1; }; - A1(const B1& opts = B1()) {} // { dg-error "constructor" } + A1(const B1& opts = B1()) {} // { dg-error "default member initializer" } }; struct A2 { @@ -14,5 +14,5 @@ struct A2 { int x2, y2 = 1; }; - A2(const B2& opts = B2()) {} // { dg-error "constructor" } + A2(const B2& opts = B2()) {} // { dg-error "default member initializer" } }; diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr39.C b/gcc/testsuite/g++.dg/cpp0x/nullptr39.C new file mode 100644 index 00000000000..a34a6af73e9 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/nullptr39.C @@ -0,0 +1,15 @@ +// PR c++/81671 +// { dg-do compile { target c++11 } } + +namespace std { typedef decltype(nullptr) nullptr_t; } + +template<class R, class CB> struct Bar +{}; +template<class R> struct Bar<R, std::nullptr_t> +{ + template<std::nullptr_t> struct Bind { constexpr static int const cb = 0; }; +}; +int foo() +{ + return Bar<int, decltype(nullptr)>::Bind<nullptr>::cb; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/pr65558.C b/gcc/testsuite/g++.dg/cpp0x/pr65558.C index d294c95a657..12946b35eda 100644 --- a/gcc/testsuite/g++.dg/cpp0x/pr65558.C +++ b/gcc/testsuite/g++.dg/cpp0x/pr65558.C @@ -2,6 +2,6 @@ // { dg-do compile { target c++11 } } inline namespace -__attribute__((__abi_tag__)) // { dg-warning "ignoring .__abi_tag__. attribute on anonymous namespace" } +__attribute__((__abi_tag__)) // { dg-warning "ignoring .abi_tag. attribute on anonymous namespace" } { } diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae59.C b/gcc/testsuite/g++.dg/cpp0x/sfinae59.C new file mode 100644 index 00000000000..d1c730b6d23 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/sfinae59.C @@ -0,0 +1,19 @@ +// PR c++/81359 +// { dg-do compile { target c++11 } } + +template<typename _Tp, typename = decltype(_Tp())> +static int test(int); + +template<typename> +static void test(...); + +template <class T, class = decltype(test<T>(0))> +struct A { }; + +struct B +{ + struct C { + int i = 0; + }; + A<C> a; +}; |