diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C new file mode 100644 index 000000000..3d8625e5c --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C @@ -0,0 +1,32 @@ +// { dg-do assemble } +// g++ 1.36.1 bug 900205_04 + +// g++ allows a class for which an implicit default X::X() constructor must +// be created (implicitly by the compiler) to be derived from another class +// which does not have its own default X::X() constructor. This is illegal. + +// Cfront 2.0 passes this test. + +// keywords: default constructor, inheritance + +// In ISO C++ 1998, such a derived class is not ill-formed, but if the +// implicitly-declared constructor is used, then it is implicitly +// defined and found to be ill-formed. + +struct struct0 { // { dg-message "note" } + int data_member; + + struct0 (int, void *); // suppresses implicit default constructor +}; + +struct0::struct0 (int, void *) // { dg-message "note" } +{ +} + +struct struct0_derived_struct_0 : public struct0 { // { dg-error "no matching|deleted" } + // { dg-message "candidate" "candidate note" { target *-*-* } 26 } +}; + +struct0_derived_struct_0 object; // { dg-message "synthesized|deleted" } + +int main () { return 0; } |