blob: 6f0e2cfb0b2e6002e449b0e9767797b787a2c1c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
// { dg-options "-Wuseless-cast" }
template<typename T>
void tmpl_f1(T& t)
{
(int)(t);
static_cast<int>(t);
reinterpret_cast<int>(t);
(int*)(&t);
const_cast<int*>(&t);
static_cast<int*>(&t);
reinterpret_cast<int*>(&t);
(int&)(t);
const_cast<int&>(t);
static_cast<int&>(t);
reinterpret_cast<int&>(t);
}
template<typename T>
void tmpl_f2(T t)
{
(int&)(t);
const_cast<int&>(t);
static_cast<int&>(t);
reinterpret_cast<int&>(t);
}
struct A { };
template<typename T>
void tmpl_f3(T& t)
{
(A)(t);
static_cast<A>(t);
(A*)(&t);
const_cast<A*>(&t);
static_cast<A*>(&t);
reinterpret_cast<A*>(&t);
dynamic_cast<A*>(&t);
(A&)(t);
const_cast<A&>(t);
static_cast<A&>(t);
reinterpret_cast<A&>(t);
dynamic_cast<A&>(t);
}
template<typename T>
void tmpl_f4(T t)
{
(A&)(t);
const_cast<A&>(t);
static_cast<A&>(t);
reinterpret_cast<A&>(t);
dynamic_cast<A&>(t);
}
A prvalue();
void f()
{
int n;
(int)(n); // { dg-warning "useless cast" }
static_cast<int>(n); // { dg-warning "useless cast" }
reinterpret_cast<int>(n); // { dg-warning "useless cast" }
(int*)(&n); // { dg-warning "useless cast" }
const_cast<int*>(&n); // { dg-warning "useless cast" }
static_cast<int*>(&n); // { dg-warning "useless cast" }
reinterpret_cast<int*>(&n); // { dg-warning "useless cast" }
int& m = n;
(int&)(m); // { dg-warning "useless cast" }
const_cast<int&>(m); // { dg-warning "useless cast" }
static_cast<int&>(m); // { dg-warning "useless cast" }
reinterpret_cast<int&>(m); // { dg-warning "useless cast" }
tmpl_f1(m);
(int&)(n); // { dg-warning "useless cast" }
const_cast<int&>(n); // { dg-warning "useless cast" }
static_cast<int&>(n); // { dg-warning "useless cast" }
reinterpret_cast<int&>(n); // { dg-warning "useless cast" }
tmpl_f2(n);
#ifdef __GXX_EXPERIMENTAL_CXX0X__
(int&&)(42);
static_cast<int&&>(42);
(A&&)(prvalue());
const_cast<A&&>(prvalue());
static_cast<A&&>(prvalue());
#endif
A a;
(A)(a); // { dg-warning "useless cast" }
static_cast<A>(a); // { dg-warning "useless cast" }
(A*)(&a); // { dg-warning "useless cast" }
const_cast<A*>(&a); // { dg-warning "useless cast" }
static_cast<A*>(&a); // { dg-warning "useless cast" }
reinterpret_cast<A*>(&a); // { dg-warning "useless cast" }
dynamic_cast<A*>(&a); // { dg-warning "useless cast" }
A& b = a;
(A&)(b); // { dg-warning "useless cast" }
const_cast<A&>(b); // { dg-warning "useless cast" }
static_cast<A&>(b); // { dg-warning "useless cast" }
static_cast<A&>(b); // { dg-warning "useless cast" }
dynamic_cast<A&>(b); // { dg-warning "useless cast" }
tmpl_f3(b);
(A&)(a); // { dg-warning "useless cast" }
const_cast<A&>(a); // { dg-warning "useless cast" }
static_cast<A&>(a); // { dg-warning "useless cast" }
reinterpret_cast<A&>(a); // { dg-warning "useless cast" }
dynamic_cast<A&>(a); // { dg-warning "useless cast" }
tmpl_f4(a);
}
|