111
|
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
|
|
48 template<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" }
|