diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dc8.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dc8.C | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dc8.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dc8.C new file mode 100644 index 0000000..e483f3e --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dc8.C @@ -0,0 +1,66 @@ +// PR c++/51424 +// { dg-do compile { target c++11 } } + +template <class T > +struct S +{ + S() : S() {} // { dg-error "delegates to itself" } + S(int x) : S(x) {} // { dg-error "delegates to itself" } +}; + +struct B1 +{ + B1() : B1() {} // { dg-error "delegates to itself" } + B1(int y) : B1(y) {} // { dg-error "delegates to itself" } +}; + +struct V1 : virtual B1 +{ + V1() : B1() {} + V1(int x) : B1(x) {} +}; + +struct B2 +{ + B2() : B2() {} // { dg-error "delegates to itself" } + B2(int y) : B2(y) {} // { dg-error "delegates to itself" } +}; + +struct V2 : virtual B2 +{ + V2() : V2() {} // { dg-error "delegates to itself" } + V2(int x) : V2(x) {} // { dg-error "delegates to itself" } +}; + +struct B3 +{ + B3() {} + B3(int y) {} +}; + +struct V3 : virtual B3 +{ + V3() : V3() {} // { dg-error "delegates to itself" } + V3(int x) : V3(x) {} // { dg-error "delegates to itself" } +}; + +struct CE1 +{ + constexpr CE1() : CE1() {} // { dg-error "delegates to itself" } + constexpr CE1(int x) : CE1(x) {} // { dg-error "delegates to itself" } +}; + +struct CEB2 +{ + constexpr CEB2() : CEB2() {} // { dg-error "delegates to itself" } + constexpr CEB2(int x) : CEB2(x) {} // { dg-error "delegates to itself" } +}; + +struct CE2 : CEB2 +{ + constexpr CE2() : CEB2() {} + constexpr CE2(int x) : CEB2(x) {} +}; + +S<int> s1; +S<int> s2(1); |