1 // Build don't link: 2 3 // Copyright (C) 2000 Free Software Foundation, Inc. 4 // Contributed by Nathan Sidwell 3 Jan 2000 <nathan@acm.org> 5 6 // Derived from a bug report by Ulrich Drepper <drepper@cygnus.com> 7 8 struct A {operator char * () { return 0;} }; 9 struct B {operator char * () const { return 0;} }; 10 struct C {operator char const * () { return 0;} }; 11 struct D {operator char const * () const { return 0;} }; 12 f0()13void f0 () 14 { 15 A a = A (); 16 B b = B (); 17 C c = C (); 18 D d = D (); 19 20 static_cast <char *> (a); 21 static_cast <char *> (b); 22 static_cast <char *> (c); // ERROR - static cast 23 static_cast <char *> (d); // ERROR - static cast 24 } 25 f1()26void f1 () 27 { 28 A a = A (); 29 B b = B (); 30 C c = C (); 31 D d = D (); 32 33 static_cast <const char *> (a); 34 static_cast <const char *> (b); 35 static_cast <const char *> (c); 36 static_cast <const char *> (d); 37 } 38 f2()39void f2 () 40 { 41 A const a = A (); 42 B const b = B (); 43 C const c = C (); 44 D const d = D (); 45 46 static_cast <char *> (a); // ERROR - static cast 47 static_cast <char *> (b); 48 static_cast <char *> (c); // ERROR - static cast 49 static_cast <char *> (d); // ERROR - static cast 50 } 51 f3()52void f3 () 53 { 54 A const a = A (); 55 B const b = B (); 56 C const c = C (); 57 D const d = D (); 58 59 static_cast <const char *> (a); // ERROR - static cast 60 static_cast <const char *> (b); 61 static_cast <const char *> (c); // ERROR - static cast 62 static_cast <const char *> (d); 63 } 64