// PR c++/69850 | |
// { dg-do compile } | |
// { dg-options "-Wnonnull-compare" } | |
struct D { | |
virtual ~D (); | |
void foo () const { delete this; } // { dg-bogus "nonnull argument" } | |
template <typename> friend struct A; | |
}; | |
template <typename T> struct A { | |
static void bar (T *x) { x->foo (); } | |
}; | |
template <typename T> struct B { | |
T b; | |
void baz () { A<T>::bar (&b); } | |
}; | |
class C { | |
class E : public D { ~E (); }; | |
void baz (); | |
B<E> c; | |
}; | |
void | |
C::baz () | |
{ | |
c.baz (); | |
} |