// { dg-options "-Wuseless-cast" } template void tmpl_f1(T& t) { (int)(t); static_cast(t); reinterpret_cast(t); (int*)(&t); const_cast(&t); static_cast(&t); reinterpret_cast(&t); (int&)(t); const_cast(t); static_cast(t); reinterpret_cast(t); } template void tmpl_f2(T t) { (int&)(t); const_cast(t); static_cast(t); reinterpret_cast(t); } struct A { }; template void tmpl_f3(T& t) { (A)(t); static_cast(t); (A*)(&t); const_cast(&t); static_cast(&t); reinterpret_cast(&t); dynamic_cast(&t); (A&)(t); const_cast(t); static_cast(t); reinterpret_cast(t); dynamic_cast(t); } template void tmpl_f4(T t) { (A&)(t); const_cast(t); static_cast(t); reinterpret_cast(t); dynamic_cast(t); } A prvalue(); void f() { int n; (int)(n); // { dg-warning "useless cast" } static_cast(n); // { dg-warning "useless cast" } reinterpret_cast(n); // { dg-warning "useless cast" } (int*)(&n); // { dg-warning "useless cast" } const_cast(&n); // { dg-warning "useless cast" } static_cast(&n); // { dg-warning "useless cast" } reinterpret_cast(&n); // { dg-warning "useless cast" } int& m = n; (int&)(m); // { dg-warning "useless cast" } const_cast(m); // { dg-warning "useless cast" } static_cast(m); // { dg-warning "useless cast" } reinterpret_cast(m); // { dg-warning "useless cast" } tmpl_f1(m); (int&)(n); // { dg-warning "useless cast" } const_cast(n); // { dg-warning "useless cast" } static_cast(n); // { dg-warning "useless cast" } reinterpret_cast(n); // { dg-warning "useless cast" } tmpl_f2(n); #ifdef __GXX_EXPERIMENTAL_CXX0X__ (int&&)(42); static_cast(42); (A&&)(prvalue()); const_cast(prvalue()); static_cast(prvalue()); #endif A a; (A)(a); // { dg-warning "useless cast" } static_cast(a); // { dg-warning "useless cast" } (A*)(&a); // { dg-warning "useless cast" } const_cast(&a); // { dg-warning "useless cast" } static_cast(&a); // { dg-warning "useless cast" } reinterpret_cast(&a); // { dg-warning "useless cast" } dynamic_cast(&a); // { dg-warning "useless cast" } A& b = a; (A&)(b); // { dg-warning "useless cast" } const_cast(b); // { dg-warning "useless cast" } static_cast(b); // { dg-warning "useless cast" } static_cast(b); // { dg-warning "useless cast" } dynamic_cast(b); // { dg-warning "useless cast" } tmpl_f3(b); (A&)(a); // { dg-warning "useless cast" } const_cast(a); // { dg-warning "useless cast" } static_cast(a); // { dg-warning "useless cast" } reinterpret_cast(a); // { dg-warning "useless cast" } dynamic_cast(a); // { dg-warning "useless cast" } tmpl_f4(a); }