// { dg-do assemble }
|
// { dg-do assemble }
|
// g++ 1.36.1 bug 900205_04
|
// g++ 1.36.1 bug 900205_04
|
|
|
// g++ allows a class for which an implicit default X::X() constructor must
|
// 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
|
// 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.
|
// which does not have its own default X::X() constructor. This is illegal.
|
|
|
// Cfront 2.0 passes this test.
|
// Cfront 2.0 passes this test.
|
|
|
// keywords: default constructor, inheritance
|
// keywords: default constructor, inheritance
|
|
|
// In ISO C++ 1998, such a derived class is not ill-formed, but if the
|
// In ISO C++ 1998, such a derived class is not ill-formed, but if the
|
// implicitly-declared constructor is used, then it is implicitly
|
// implicitly-declared constructor is used, then it is implicitly
|
// defined and found to be ill-formed.
|
// defined and found to be ill-formed.
|
|
|
struct struct0 { // { dg-message "note" }
|
struct struct0 { // { dg-message "note" }
|
int data_member;
|
int data_member;
|
|
|
struct0 (int, void *); // suppresses implicit default constructor
|
struct0 (int, void *); // suppresses implicit default constructor
|
};
|
};
|
|
|
struct0::struct0 (int, void *) // { dg-message "note" }
|
struct0::struct0 (int, void *) // { dg-message "note" }
|
{
|
{
|
}
|
}
|
|
|
struct struct0_derived_struct_0 : public struct0 { // { dg-error "no matching" }
|
struct struct0_derived_struct_0 : public struct0 { // { dg-error "no matching" }
|
};
|
};
|
|
|
struct0_derived_struct_0 object; // { dg-message "synthesized" }
|
struct0_derived_struct_0 object; // { dg-message "synthesized" }
|
|
|
int main () { return 0; }
|
int main () { return 0; }
|
|
|