1 // { dg-do compile } 2 // { dg-options "-Wall" } 3 4 // Copyright (C) 2003 Free Software Foundation, Inc. 5 // Contributed by Nathan Sidwell 2 Sep 2003 <nathan@codesourcery.com> 6 7 // PR 12037. 8 9 struct X 10 { 11 int operator+(int); 12 int operator-(int); 13 int operator*(int); 14 int operator/(int); 15 int operator%(int); 16 int operator>>(int); 17 int operator<<(int); 18 int operator&(int); 19 int operator|(int); 20 int operator^(int); 21 int operator&&(int); 22 int operator||(int); 23 int operator==(int); 24 int operator!=(int); 25 int operator<(int); 26 int operator<=(int); 27 int operator>(int); 28 int operator>=(int); 29 int operator*(); 30 int operator!(); 31 int operator~(); 32 int operator++(); 33 int operator--(); 34 int operator++(int); 35 int operator--(int); 36 int operator()(); 37 int operator,(int); 38 X *operator->(); 39 operator int () const; 40 int m; 41 virtual ~X (); 42 X &Foo (); 43 }; 44 struct Y : X 45 { 46 }; 47 Foo(X & x)48template<int I> void Foo (X &x) 49 { 50 x + I; 51 x - I; 52 x * I; 53 x / I; 54 x % I; 55 x >> I; 56 x << I; 57 x & I; 58 x | I; 59 x && I; 60 x || I; 61 x == I; 62 x != I; 63 x < I; 64 x <= I; 65 x > I; 66 x >= I; 67 *x; 68 !x; 69 ~x; 70 x++; 71 x--; 72 ++x; 73 --x; 74 x (); 75 x, I; 76 x->m; 77 static_cast<int> (x); 78 dynamic_cast<Y &> (x); 79 reinterpret_cast<int> (x.Foo ()); // { dg-error "invalid cast" } 80 const_cast<X &> (x.Foo ()); // { dg-warning "not used" } 81 82 reinterpret_cast<int *> (&x);// { dg-warning "no effect" } 83 const_cast<X &> (x); // { dg-warning "no effect" } 84 sizeof (x++); // { dg-warning "no effect" } 85 __alignof__ (x++); // { dg-warning "no effect" } 86 } 87 88 template void Foo<4> (X&); // { dg-message "required" } 89