diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C new file mode 100644 index 000000000..0d181c7ee --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C @@ -0,0 +1,50 @@ +// { dg-options "-pedantic-errors -std=c++98" } +// { dg-do assemble } +// g++ 1.36.1 bug 900119_01 + +// g++ allows initializers to be included in the declaration of members +// of classes, structs, unions (even when -pedantic is used). + +// This is not allowed by the C++ 2.0 Reference Manual or by Cfront 2.0. + +// keywords: member declaration, member initialization + +// { dg-prune-output "is a static data member" } + +int global_int; + +class class0 { +public: + int class0_member_0 = 99; /* { dg-error "" } */ + static int class0_member_1 = 99; /* { dg-error "" } */ + int &class0_member_2 = global_int; /* { dg-error "" } */ + + class0 () : class0_member_2 (global_int) { } +}; + + +struct struct0 { + int struct0_member_0 = 99; /* { dg-error "" } */ + static int struct0_member_1 = 99; /* { dg-error "" } */ + int &struct0_member_2 = global_int; /* { dg-error "" } */ + + struct0 () : struct0_member_2 (global_int) { } +}; + +// g++ does not allow unions to have more than one member with an initializer + +union union0 { + int union0_member_0 = 99; /* { dg-error "" } */ +}; + +union union1 { + //static int union1_member_0 = 99; /* definitely illegal (9.5) */ +}; + +union union2 { + int &union2_member_0 = global_int; /* { dg-error "" } */ + + union2 () : union2_member_0 (global_int) { } +}; + +int main () { return 0; } |