diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.other/cast4.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/cast4.C | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/cast4.C b/gcc/testsuite/g++.old-deja/g++.other/cast4.C new file mode 100644 index 000000000..3348dcee8 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/cast4.C @@ -0,0 +1,63 @@ +// { dg-do assemble } + +// Copyright (C) 2000 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 3 Jan 2000 <nathan@acm.org> + +// Derived from a bug report by Ulrich Drepper <drepper@cygnus.com> + +struct A {operator char * () { return 0;} }; +struct B {operator char * () const { return 0;} }; +struct C {operator char const * () { return 0;} }; +struct D {operator char const * () const { return 0;} }; + +void f0 () +{ + A a = A (); + B b = B (); + C c = C (); + D d = D (); + + static_cast <char *> (a); + static_cast <char *> (b); + static_cast <char *> (c); // { dg-error "" } static cast + static_cast <char *> (d); // { dg-error "" } static cast +} + +void f1 () +{ + A a = A (); + B b = B (); + C c = C (); + D d = D (); + + static_cast <const char *> (a); + static_cast <const char *> (b); + static_cast <const char *> (c); + static_cast <const char *> (d); +} + +void f2 () +{ + A const a = A (); + B const b = B (); + C const c = C (); + D const d = D (); + + static_cast <char *> (a); // { dg-error "" } static cast + static_cast <char *> (b); + static_cast <char *> (c); // { dg-error "" } static cast + static_cast <char *> (d); // { dg-error "" } static cast +} + +void f3 () +{ + A const a = A (); + B const b = B (); + C const c = C (); + D const d = D (); + + static_cast <const char *> (a); // { dg-error "" } static cast + static_cast <const char *> (b); + static_cast <const char *> (c); // { dg-error "" } static cast + static_cast <const char *> (d); +} |